Python 即使cwd已更改,也可以访问文件

Python 即使cwd已更改,也可以访问文件,python,python-3.x,io,chdir,Python,Python 3.x,Io,Chdir,下面的代码非常有效: with open('data.txt') as data: print(data) 但是如果我使用os.chdir更改CWD,它将无法工作 是否有一种方法可以在仍然能够更改CWD的情况下访问该文件 注意:CWD的更改方式将取决于用户如何使用它。一个选项是在更改目录之前打开文件 with open('data.txt') as data: ... os.chdir(...) ... print(data) 另一个选项是在更改之前保

下面的代码非常有效:

with open('data.txt') as data:
    print(data)
但是如果我使用
os.chdir
更改CWD,它将无法工作

是否有一种方法可以在仍然能够更改CWD的情况下访问该文件


注意:CWD的更改方式将取决于用户如何使用它。

一个选项是在更改目录之前打开文件

with open('data.txt') as data:
    ...
    os.chdir(...)
    ...
    print(data)
另一个选项是在更改之前保存原始目录,并使用它形成绝对路径:

orig_dir = os.getcwd()
os.chdir(...)
...
with open(os.path.join(orig_dir, 'data.txt')) as data:
    print(data)

我认为这是不可能的,但我建议,如果您计划部署它,请发出一条错误消息,告诉用户将要打开的文件放在与python脚本相同的目录中。谢谢您的回答

但我想是我自己弄的

在调用
os.chdir
函数之前, 我能做到

from pathlib import Path
datafile = Path('data.txt').absolute()

然后,我将在运行此操作的任何计算机中获取绝对路径。

使用文件的绝对路径,而不是相对路径。也许您可以在更改目录之前打开文件。