我有一个脚本可以在其目录中加载很多文件,并且可以从任何位置调用此脚本。我想知道是否可以在文件开头使用os.chdir(os.path.dirname(__file__))
来使事情变得不太冗长。
脚本目录:
script/path/
do_stuff.py
src/
..some files
该脚本的名称如下:
$ python3 script/path/do_stuff.py
所以,而不是这样做
with open(os.path.join(os.path.dirname(__file__), 'src/..')) as f:
...
我在导入后添加os.chdir(os.path.dirname(__file__))
并这样做:
with open('src/..') as f:
...
这被认为是一种好习惯吗?还是应该避免使用它,以避免在更复杂的项目中出现复杂情况?
答案 0 :(得分:4)
另一种选择:
编写一个函数,为您提供本地文件资源的正确路径:
def get_resource_file(path):
return os.path.join(os.path.dirname(__file__), path)
然后:
with open(get_resource_file('src/…')):
…
正如我的评论中所述,更改当前工作目录意味着您不再可以接受来自用户输入的相对路径(除非您首先存储原始工作目录并从该目录构造绝对路径)。这可能是命令行工具的最常见情况:
path/to/tool local/path/to/file
相比之下,cd
离开用户工作目录的收益相对较小。