1. 程式人生 > >測試過程中,如何改變python的工作目錄,並引用新目錄下的其他模組或檔案

測試過程中,如何改變python的工作目錄,並引用新目錄下的其他模組或檔案

        緣由:由於測試工作需要,寫了大量的python程式碼,都放在工作目錄下面,後來發現些的程式碼檔案太多了,放在目錄下面顯得有些雜亂,索性整理了一番,剛一整理,問題來了。引用的各種檔案和包無法找到了。

       原因:這些問題的出現時由於改變python程式碼路徑的緣故。因為當前指令碼的路徑改變了。比如說之前是 /home/test/work,現在的工作目錄變成了/home/test/work/cases

       後來想不就是跳到上級目錄麼?然後在那些檔案的頂部加了如下程式碼:

import sys
sys.path.append('..')


     執行之後發現問題依然存在。部分檔案或者包依然不能引用。

     經過仔細檢查後發現,上面那段程式碼只是把當前目錄的上級目錄加到path路徑中。並沒有解決根本問題。

最終解決的方法如下:

import sys
import os
os.chdir("..")
sys.path.append(os.getcwd())


工作原理是:先用os.chdir 改變當前工作目錄到上一級(也就是把工作目錄從 /home/test/work/cases 改變到 /home/test/work ),然後把新的當前路徑加入到path中.

最終問題得以完全解決。

方法不太好,如果有更好的辦法,請各位教我,非常感謝。。。

附:python下目錄操作的方法:

os.sep 可以取代作業系統特定的路徑分割符。
os.name字串指示你正在使用的平臺。比如對於Windows,它是'nt',而對於Linux/Unix使用者,它是'posix'。
os.getcwd()函式得到當前工作目錄,即當前Python指令碼工作的目錄路徑。
os.getenv()和os.putenv()函式分別用來讀取和設定環境變數。
os.listdir()返回指定目錄下的所有檔案和目錄名。
os.remove()函式用來刪除一個檔案。
os.system()函式用來執行shell命令。

os.linesep字串給出當前平臺使用的行終止符。例如,Windows使用'\r\n',Linux使用'\n'而Mac使用'\r'。

os.path.split()函式返回一個路徑的目錄名和檔名。

os.path.isfile()和os.path.isdir()函式分別檢驗給出的路徑是一個檔案還是目錄。

os.path.existe()函式用來檢驗給出的路徑是否真地存在

os和os.path模組
os.listdir(dirname):列出dirname下的目錄和檔案
os.getcwd():獲得當前工作目錄
os.curdir:返回但前目錄('.')
os.chdir(dirname):改變工作目錄到dirname