无法打开同一目录中的文件[重复]
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 [重复]