出于某种原因,我的代码无法打开一个简单的文件:
这是代码:
file1 = open('recentlyUpdated.yaml')
错误是:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
open()
文件的完整路径,似乎没有任何工作。os.listdir()
查看当前工作目录中的文件列表os.getcwd()
的目录中(如果从IDE启动代码,则可能位于不同的目录中)os.chdir(dir)
,dir
作为文件所在的文件夹,然后打开文件,其名称就像你正在做的那样。
在open
调用中指定文件的绝对路径。dir = r'C:\Python32'
如果你不使用原始字符串,你必须逃避每个反斜杠:'C:\\User\\Bob\\...'
正斜杠也适用于Windows 'C:/Python32'
,不需要转义。让我澄清Python如何找到文件:
working directory
的路径。您可以通过调用os.getcwd()
来查看Python的当前工作目录。如果你尝试做open('sortedLists.yaml')
,Python会看到你传递一个相对路径,所以它将搜索当前工作目录中的文件。调用os.chdir
将更改当前工作目录。
示例:假设file.txt
在C:\Folder
中找到。
要打开它,你可以这样做:
os.chdir(r'C:\Folder')
open('file.txt') #relative path, looks inside the current working directory
要么
open(r'C:\Folder\file.txt') #full path
该文件可能存在但可能具有不同的路径。尝试编写文件的绝对路径。
尝试使用qazxsw poi函数来检查至少python是否看到了该文件。
试试这样:
os.listdir()
最有可能的问题是你使用file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
打开文件,但relative file path没有设置为你认为的。
这是一个常见的误解,相对路径是相对于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!
作为文件路径:
raw string literals
(另见:path = r'C:\Users\newton\file.yaml'
# Correct!
)file.yaml
。仔细检查文件的扩展名。