无法打开同一目录中的文件[重复]

Posted

技术标签:

【中文标题】无法打开同一目录中的文件[重复]【英文标题】: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? 【参考方案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 打开的位置开始,因此如果您在根目录中打开终端,它会尝试在根目录中查找文件

以上是关于无法打开同一目录中的文件[重复]的主要内容,如果未能解决你的问题,请参考以下文章

框架/视图中的file_put_contents无法打开流:没有这样的文件或目录[重复]

无法打开流:[重复]中没有这样的文件或目录

收到“致命错误 C1083:无法打开包含文件:'gxall.h':没有这样的文件或目录”[重复]

无法打开流:没有这样的文件或目录,但目录存在。在本地主机上工作但不在实时站点上工作[重复]

file_put_contents,无法打开流:没有这样的文件或目录 Laravel [重复]

“src/Entity/Order.php):无法打开流:没有这样的文件或目录” - 当 make:entity - Symfony 5 [重复]