出于某种原因,我的代码无法打开一个简单的文件:
这是代码:
file1 = open('recentlyUpdated.yaml')
错误是:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
- 当然,我检查了这是文件的正确名称。
- 我试过移动文件,给
open()
文件的完整路径,但似乎都不起作用。
原文由 Santiago 发布,翻译遵循 CC BY-SA 4.0 许可协议
出于某种原因,我的代码无法打开一个简单的文件:
这是代码:
file1 = open('recentlyUpdated.yaml')
错误是:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
open()
文件的完整路径,但似乎都不起作用。原文由 Santiago 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题很可能是您使用 相对文件路径 打开文件,但 当前工作目录 未设置为您认为的目录。
认为相对路径是相对于 python 脚本的位置是一种常见的误解,但这是不正确的。相对文件路径总是相对于当前工作目录,当前工作目录不一定是 python 脚本的位置。
您有以下三种选择:
file = open(r'C:\path\to\your\file.yaml')
from pathlib import Path
script_location = Path(__file__).absolute().parent
file_location = script_location / 'file.yaml'
file = file_location.open()
(另请参阅: 如何获取当前正在执行的文件的路径和名称? )
import os
os.chdir(r'C:\path\to\your\file')
file = open('file.yaml')
其他可能导致“找不到文件”错误的常见错误包括:
path = 'C:\Users\newton\file.yaml'
# Incorrect! The '\n' in 'Users\newton' is a line break character!
为避免犯此错误,请记住对文件路径使用 原始字符串文字:
path = r'C:\Users\newton\file.yaml'
# Correct!
(另请参阅: Python 中的 Windows 路径)
由于 Windows 不显示已知的文件扩展名,有时当您认为您的文件名为 file.yaml
时,它实际上被命名为 file.yaml.yaml
。仔细检查文件的扩展名。
原文由 Aran-Fey 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答4.2k 阅读✓ 已解决
2 回答840 阅读✓ 已解决
1 回答4.1k 阅读✓ 已解决
3 回答832 阅读✓ 已解决
2 回答2.1k 阅读✓ 已解决
4 回答2.5k 阅读
3 回答880 阅读✓ 已解决
1 回答6k 阅读
1 回答5.4k 阅读✓ 已解决
4 回答12.7k 阅读✓ 已解决
1 回答14.1k 阅读
1 回答13.2k 阅读✓ 已解决
os.listdir()
查看当前工作目录中的文件列表os.getcwd()
(如果您从 IDE 启动代码,您很可能在不同的目录中)os.chdir(dir)
,dir
是文件所在的文件夹,然后像以前一样用文件名打开文件。open
调用中指定文件的绝对路径。dir = r'C:\Python32'
'C:\\User\\Bob\\...'
'C:/Python32'
并且不需要转义。让我澄清一下 Python 是如何查找文件的:
C:\Python\scripts
如果您使用的是 Windows。os.getcwd()
查看 Python 的当前工作目录。如果您尝试执行
open('sortedLists.yaml')
,Python 将看到您正在向其传递相对路径,因此它将在当前工作目录中搜索文件。调用
os.chdir()
将更改当前工作目录。示例:假设
file.txt
在C:\Folder
中找到。要打开它,您可以执行以下操作:
或者