2014-11-25 62 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程序。