Python open()给出IOError:Errno 2没有这样的文件或目录

问题描述 投票:44回答:3

出于某种原因,我的代码无法打开一个简单的文件:

这是代码:

file1 = open('recentlyUpdated.yaml')

错误是:

IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
  • 当然,我检查了这是文件的正确名称。
  • 我试过移动文件,给open()文件的完整路径,似乎没有任何工作。
python file file-io filenotfoundexception file-not-found
3个回答
53
投票
  • 确保该文件存在:使用os.listdir()查看当前工作目录中的文件列表
  • 确保您位于您认为使用os.getcwd()的目录中(如果从IDE启动代码,则可能位于不同的目录中)
  • 然后你可以: 调用os.chdir(dir)dir作为文件所在的文件夹,然后打开文件,其名称就像你正在做的那样。 在open调用中指定文件的绝对路径。
  • 如果您的路径使用反斜杠,请记住使用原始字符串,如下所示:dir = r'C:\Python32' 如果你不使用原始字符串,你必须逃避每个反斜杠:'C:\\User\\Bob\\...' 正斜杠也适用于Windows 'C:/Python32',不需要转义。

让我澄清Python如何找到文件:

  • 绝对路径是从计算机的根目录开始的路径,例如“C:\ Python \ scripts ..”(如果您在Windows上)。
  • 相对路径是不以计算机根目录开头的路径,而是相对于称为working directory的路径。您可以通过调用os.getcwd()来查看Python的当前工作目录。

如果你尝试做open('sortedLists.yaml'),Python会看到你传递一个相对路径,所以它将搜索当前工作目录中的文件。调用os.chdir将更改当前工作目录。

示例:假设file.txtC:\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

6
投票

该文件可能存在但可能具有不同的路径。尝试编写文件的绝对路径。

尝试使用qazxsw poi函数来检查至少python是否看到了该文件。

试试这样:

os.listdir()

4
投票

最有可能的问题是你使用file1 = open(r'Drive:\Dir\recentlyUpdated.yaml') 打开文件,但relative file path没有设置为你认为的。

这是一个常见的误解,相对路径是相对于python脚本的位置,但这是不真实的。相对文件路径始终相对于当前工作目录,并且当前工作目录不必是python脚本的位置。

你有三个选择:


其他可能导致“找不到文件”错误的常见错误包括:

  • 意外地在文件路径中使用转义序列: 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!
  • 忘记Windows不显示文件扩展名: 由于Windows不显示已知的文件扩展名,因此有时当您认为您的文件名为Windows path in Python时,它实际上名为file.yaml。仔细检查文件的扩展名。
© www.soinside.com 2019 - 2024. All rights reserved.