python - 无法打开同一目录中的文件
问题描述
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 文件都在完全相同的目录中。这也发生在我拥有的其他一些依赖读取文件的程序中
解决方案
尽管该文件位于脚本目录中,但程序的当前工作目录可能完全位于其他位置。对于像 IDE 这样的 GUI 程序尤其如此。当您从 IDE 运行程序时,运行对话框中可能有一个用于设置 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="")
推荐阅读
- sql - SQL - 从没有 UNION 的条件连接中选择一个值
- json - Golang 可变字段
- python - 如何获取下一个标签的文本?(美汤)
- django - Django过滤器使用Q和具有不同值的多个字段
- python - conda 环境中的依赖关系 plot-vcfstats
- c++ - 显示所有 c++ #include 依赖项
- excel - 如何从vba例程执行单元格(行,列)中的公式
- r - R中的文本编码与日文字符
- ansible - Jinja2 循环中未定义的变量 - 尝试访问索引
- javascript - 循环 URL 并提取值并存储在 JSON JavaScript 中