2014-11-25 57 views
0

不是一個主要問題,而只是在做課堂工作時遇到的一個煩惱。我將Notepad ++設置爲直接從Notepad ++運行Python代碼,但我注意到當嘗試訪問文件時,即使給定源文本文件與正在運行的Python程序位於同一文件夾中,我也必須使用該文件的完整路徑。Python程序在記事本++中需要完整路徑

但是,當通過cmd運行我的Python程序時,我只需鍵入特定的文件名就可以覆蓋整個路徑。

有沒有人有一個簡短的答案,爲什麼這可能是或可能如何重新配置​​Notepad ++?

在此先感謝。

回答

1

問題是您的代碼假定current working directory與腳本目錄相同。一般來說這是不正確的。當然,如果您在運行它之前在cmd窗口,並且您到腳本目錄,這是真的。

如果您不想依賴於此(例如,因爲您希望能夠從Notepad ++或直接從資源管理器中運行腳本),您要做的就是明確使用腳本目錄。例如:

import os 
import sys 

scriptdir = os.path.abspath(os.path.dirname(sys.argv[0])) 

with open(os.path.join(scriptdir, 'myfile.txt')) as f: 
    # etc. 

如果你有一噸的文件,你的腳本一噸的地方參考,它可能是最好明確設置工作目錄。只需添加一行:

os.chdir(scriptdir) 

對於超出快速&髒腳本任何東西,它通常是更好地建設一個安裝包,並使用pkg_resources訪問數據文件。閱讀Tutorial on Packaging and Distributing Projects瞭解更多詳情。但只要你只是剽竊腳本來幫助你維護你的特定系統,那麼scriptdir解決方案是可行的。

+0

神奇的解釋。謝謝。 – TheNotoriousWMB 2014-11-25 01:56:04

1

在用於啓動Notepad ++的快捷方式的屬性中,可以將其工作目錄更改爲您更習慣於從Python開始的任何目錄。你也可以用適當的os.chdir()命令開始你的python程序。