在另一个目录中打开文件(Python)

新手上路,请多包涵

我一直对 Python 中的目录遍历这个主题感到困惑,并且有一种情况我很好奇:我有一个我想访问的文件,它位于一个与我当前所在的目录基本平行的目录中。鉴于此目录结构:

 \parentDirectory
    \subfldr1
        -testfile.txt
    \subfldr2
        -fileOpener.py

我试图在 fileOpener.py 中编写脚本以退出 subfldr2,进入 subfldr1,然后在 testfile.txt 上调用 open()。

通过浏览 stackoverflow,我看到人们使用 osos.path 来完成此操作,但我只在脚本源下的子目录中找到了有关文件的示例。

为此,我意识到我可以将脚本重新定位到 subfldr1 中,然后一切都会好起来的,但我对如何实现这一点感到好奇。

编辑:这个问题特别适用于 Windows 机器,因为我不知道驱动器号和反斜杠如何影响这个问题。

原文由 dbishop 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 311
2 个回答

如果你知道文件的完整路径,你可以做类似的事情。但是,如果您的问题直接与相对路径相关,那我不熟悉并且必须研究和测试。

 path = 'C:\\Users\\Username\\Path\\To\\File'

with open(path, 'w') as f:
    f.write(data)

编辑:

这是一种相对而不是绝对的方法。不确定这是否适用于 Windows,您将不得不对其进行测试。

 import os

cur_path = os.path.dirname(__file__)

new_path = os.path.relpath('..\\subfldr1\\testfile.txt', cur_path)
with open(new_path, 'w') as f:
    f.write(data)

编辑 2: 关于 __file__ 的一个快速说明,这在交互式解释器中不起作用,因为它是交互式运行的,而不是从实际文件运行的。

原文由 Jared Mackey 发布,翻译遵循 CC BY-SA 3.0 许可协议

from pathlib import Path

data_folder = Path("source_data/text_files/")
file_to_open = data_folder / "raw_data.txt"

f = open(file_to_open)
print(f.read())

原文由 SaretMagnoslove 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题