【问题标题】:Access a file even if the cwd has changed即使 cwd 已更改也访问文件
【发布时间】:2020-11-30 06:20:47
【问题描述】:

以下代码完美运行:

with open('data.txt') as data:
    print(data)

但如果我使用os.chdir 更改 CWD,它将无法正常工作

有什么方法可以让我在访问文件的同时还能更改 CWD?

注意:CWD 的变化方式取决于用户如何使用它。

【问题讨论】:

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

标签: python python-3.x io chdir


【解决方案1】:

谢谢你的回答

但我想我自己已经明白了!

在我调用os.chdir 函数之前, 我可以的,

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      一种选择是在更改目录之前打开文件。

      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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-08-12
        • 2013-12-30
        • 1970-01-01
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多