【问题标题】:Unable to open files in same directory [duplicate]无法打开同一目录中的文件[重复]
【发布时间】:2021-05-20 22:14:03
【问题描述】:

python 无法加载同一目录中的文件导致很多问题 在 MacOS 10.15.7 上运行,并使用 pycharm 昨天我的所有程序都运行良好,现在似乎找不到这些文件。

with open('lorem.txt',mode='r') as file:
    for line in file:
        print(line)

这是返回此回溯

Traceback (most recent call last):
File "/Users/calblanco/PycharmProjects/pundont/main.py", line 2, in <module>
with open('lorem.txt','r') as file:
FileNotFoundError: [Errno 2] No such file or directory: 'lorem.txt'

python 文件和 txt 文件都在完全相同的目录中。 这也发生在我拥有的其他一些依赖读取文件的程序中

【问题讨论】:

  • 该文件在当前目录中不存在(不一定与python脚本文件所在的目录相同)
  • 如果你使用 PyCharm,当前目录可能不是你想象的那样。尝试打印出调用os.getcwd()返回的值。
  • 您可以确定脚本所在的目录并使用它来确定数据文件的路径(而不是指望它是什么)。见How do you properly determine the current script directory?

标签: python macos file pycharm


【解决方案1】:

虽然文件在脚本目录中,但程序的当前工作目录可能完全在其他地方。对于像 IDE 这样的 GUI 程序尤其如此。当您从 IDE 运行程序时,run 对话框中可能有一个用于设置 CWD 的字段。

但还有另一种方法。当 python 运行一个脚本时,它会将它的文件名包含在一个名为 __file__ 的变量中。您可以使用它来定位脚本的目录,并从那里构建其任何文件的路径。使用pathlib 模块,您可以这样做

from pathlib import Path

script_dir = Path(__file__).absolute().parent
lorem_file = script_dir/"lorem.txt"
with lorem_file.open() as file:
    for line in file:
        print(line, end="")

【讨论】:

    【解决方案2】:

    这可能是 bash 问题 尝试设置这样的文件路径

    open('./lorem.txt','r')
    

    或在该文件存在的同一文件上打开终端

    【讨论】:

    • 这与没有./ 的普通文件名有何不同?
    • 纯文件名考虑路径从您的 bash 打开的位置开始,因此如果您在根目录中打开终端,它会尝试在根目录中查找文件
    猜你喜欢
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2011-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多