linux下python的檔案路徑操作

2021-07-23 05:03:48 字數 2125 閱讀 9012

import sys

sys.path

比如,其中乙個路徑是:/usr/local/python/lib/python2.7/site-packages/

這時可以把自己編寫的工程放入到該目錄下。比如我編寫了乙個基於知網來計算詞語相似度的程式,所有的模組都放在

包wordsimilarity中。

/usr/local/python/lib/python2.7/site-packages/wordsimilarity/

_init_.py

primitive.py

word.py

wordsimilarity.py

whole.dat

glossary.dat …

注意,資料夾中wordsimilarity必須包含_init_.py檔案,這時候才是python包,否則知識一般的資料夾,是不可以import匯入的。

import wordsimilarity as ws

from wordsimilarity import wordsimilarity

...

在上面提到的利用知網來計算詞語相似度的程式,因為需要從檔案(即上面的whole.dat和glossary.dat或者.txt檔案)中讀入詞條,所以需要把包含詞條的檔案隨模組放在一起才能被正確呼叫。之前都是用全路徑來呼叫,是在太愚蠢了。

先上**(獲取glossary.dat檔案):

"""這方法是看了jieba分詞的原始碼才知道的,非常感謝~~"""

_get_module_path = lambda path: os.path.normpath(os.path.join(

os.path.dirname(__file__), path))

path = _get_module_path("glossary.dat")

結巴分詞的原始碼是這樣的:

_get_module_path = lambda path: os.path.normpath(os.path.join(os.getcwd(),

os.path.dirname(__file__), path))

default_idf = _get_module_path("idf.txt")

但是我的理解是:這個os.getcwd()似乎是多餘的,因為os.getcwd()獲取的是當前執行命令的所在路徑,假設當前路徑不是在/usr/local/python/lib/python2.7/site-packages/wordsimilarity/,都是沒用的。

下面介紹一下os.path的常用方法來解釋一下為什麼:

import os

# 獲取目前執行程式所在的絕對路徑

os.path.getcwd()

# 返回路徑名path的規範化的絕對路徑。在大多數平台,這等同於這樣

# normpath(join(os.getcwd(), path))呼叫normpath()函式

os.parh.abspath(path)

# 返回路徑名為path的目錄名

os.path.dirname(path)

os.path.dirname(__file__) # __file__返回所呼叫的模組的絕對路徑

# 將乙個或多個路徑正確地連線起來。如果任何乙個引數是絕對路徑,那之前的引數就會被丟棄,然後連線繼續

os.path.join(path1[, path2[, ...]])

最主要的是:print os.path.dirname(_file_)

一般來說,.py檔案中所要讀寫的檔案,最好是和.py檔案放在同乙個層中,這樣會更加方便。

詞語相似度的**基本完成了,但是還需要繼續優化。呼叫方式如下:

import wordsimilarity as ws

word1 = "打架"

word2 = "戰鬥"

# 計算兩個詞語的相似度

sim = ws.simwordstr(word1, word2)

...

Linux下的檔案

在多使用者 多工環境中,配置檔案控制使用者許可權 系統應用程式 守護程序 服務和其它管理任務。這些任務包括管理使用者帳號 分配磁碟配額 管理電子郵件和新聞組,以及配置核心引數。什麼是系統配置檔案?內 核本身也可以看成是乙個 程式 為什麼核心需要配置檔案?核心需要了解系統中使用者和組的列表,進而管理檔...

linux下的TCP IP socket 檔案傳輸

伺服器 本檔案是伺服器的 include for sockaddr in include for socket include for socket include for printf include for exit include for bzero include for time t an...

linux下的檔案鏈結

檔案鏈結,ln s sourcefile targetfile 加上 s為符號鏈結 符號鏈結下,targetfile相當於快捷方式檔案,sourcefile為原始檔 用ls l來檢視,會看到 targetfile sourcefile 符號鏈結類似於win下的快捷方式 鏈結有兩種,一種被稱為硬鏈結 ...