即使 cwd 已更改也访问文件
Access a file even if the cwd has changed
下面的代码完美运行:
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()
然后我将在我 运行 所在的任何计算机中获取绝对路径。
下面的代码完美运行:
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()
然后我将在我 运行 所在的任何计算机中获取绝对路径。