这是一个好的做法吗操作系统chdir(操作系统路径目录名(\uu文件\uuuu))在文件的开头?

2024-04-25 15:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,在它的目录中加载了很多文件,这个脚本可以从任何位置调用。我想知道是否可以在文件的开头使用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:
    ...

这被认为是一种好的做法吗?或者我应该避免它,以避免更复杂的项目的复杂性?你知道吗


Tags: 文件pathpysrc目录脚本oswith
1条回答
网友
1楼 · 发布于 2024-04-25 15:29:45

另一种选择:

  1. 编写一个函数,为本地文件资源提供正确的路径:

    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离开用户的工作目录的收益相对较小。你知道吗

相关问题 更多 >