不是一個主要問題,而只是在做課堂工作時遇到的一個煩惱。我將Notepad ++設置爲直接從Notepad ++運行Python代碼,但我注意到當嘗試訪問文件時,即使給定源文本文件與正在運行的Python程序位於同一文件夾中,我也必須使用該文件的完整路徑。Python程序在記事本++中需要完整路徑
但是,當通過cmd運行我的Python程序時,我只需鍵入特定的文件名就可以覆蓋整個路徑。
有沒有人有一個簡短的答案,爲什麼這可能是或可能如何重新配置Notepad ++?
在此先感謝。
不是一個主要問題,而只是在做課堂工作時遇到的一個煩惱。我將Notepad ++設置爲直接從Notepad ++運行Python代碼,但我注意到當嘗試訪問文件時,即使給定源文本文件與正在運行的Python程序位於同一文件夾中,我也必須使用該文件的完整路徑。Python程序在記事本++中需要完整路徑
但是,當通過cmd運行我的Python程序時,我只需鍵入特定的文件名就可以覆蓋整個路徑。
有沒有人有一個簡短的答案,爲什麼這可能是或可能如何重新配置Notepad ++?
在此先感謝。
問題是您的代碼假定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解決方案是可行的。
在用於啓動Notepad ++的快捷方式的屬性中,可以將其工作目錄更改爲您更習慣於從Python開始的任何目錄。你也可以用適當的os.chdir()
命令開始你的python程序。
神奇的解釋。謝謝。 – TheNotoriousWMB 2014-11-25 01:56:04