python open找不到文件的原因_Python open()给出IOError:Errno 2没有这样的文件或目录...

出于某种原因,我的代码在打开简单文件时遇到问题:

这是代码:

1file1 = open('recentlyUpdated.yaml')

错误是:

1IOError: [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如何查找文件:

绝对路径是以计算机的根目录开始的路径,例如,如果您在Windows上,则为"c:pythonscripts.."。

相对路径不是从计算机的根目录开始的路径,而是相对于称为working directory的东西。您可以通过调用os.getcwd()来查看python当前的工作目录。

如果尝试执行open('sortedLists.yaml'),python将看到您正在传递一个相对路径,因此它将搜索当前工作目录中的文件。调用os.chdir将更改当前工作目录。

例:假设file.txt是在C:\Folder中发现的。

要打开它,可以执行以下操作:

1

2os.chdir(r'C:\Folder')

open('file.txt') #relative path, looks inside the current working directory

1open(r'C:\Folder\file.txt') #full path

当使用os.chdir(dir)时,我需要把路径放在目录中还是只放在目录名中?另外,一旦我得到了文件名,我是把它放在open()中还是写open(os.chdir(dir))?

@圣地亚哥我在回答中澄清了这一点。

+1代表原始字符串R''

jpeg或png类型如何?即使是公益诉讼也无济于事……

您可以使用相同的技术打开任何文件类型。但是,您必须将'b'作为open函数中的第二个参数传递,以指定您正在以二进制数据的形式读取文件。

+1表示os.listdir()建议。这是一个在键盘上敲击你的脸的时刻,但如果在Windows10上工作,请确保你没有手动添加一个文件扩展名,其中已经有一个。Windows中的默认视图通常隐藏扩展名,如果您犯了这个错误,它可能看起来像"filename.txt",其中的名称实际上是"filename.txt.txt"。要验证,请仔细查看os.listdir()的输出。此文件名不匹配也会导致'[errno 2]没有此类文件或目录:'错误。我知道,我知道。我的额头上还有空格键的印记。

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

尝试使用os.listdir()函数检查是否至少python看到该文件。

尝试如下:

1

2file1 = open(r'Drive:\Dir

ecentlyUpdated.yaml')

它似乎无法识别我计算机上的任何文件路径。我有什么方法可以搜索文件吗?萨什卡

谢谢你的提示。

最有可能的问题是,您正在使用相对文件路径打开文件,但当前工作目录未设置为您认为的路径。

常见的误解是相对路径与Python脚本的位置相关,但这是不真实的。相对文件路径总是相对于当前工作目录,并且当前工作目录不必是Python脚本的位置。

您有三种选择:

使用绝对路径打开文件:

1file = open(r'C:\path\to\your\file.yaml')

生成相对于python脚本的文件路径:

1

2

3

4

5from pathlib import Path

script_location = Path(__file__).absolute().parent

file_location = script_location / 'file.yaml'

file = file_location.open()

(另请参见:如何获取当前正在执行的文件的路径和名称?)

打开文件前更改当前工作目录:

1

2

3

4import os

os.chdir(r'C:\path\to\your\file')

file = open('file.yaml')

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

在文件路径中意外使用转义序列:

1

2

3

4

5path = 'C:\Users

ewton\file.yaml'

# Incorrect! The '

' in 'Users

ewton' is a line break character!

为避免出现此错误,请记住对文件路径使用原始字符串文本:

1

2

3path = r'C:\Users

ewton\file.yaml'

# Correct!

(另请参见:python中的windows路径)

忘记Windows不显示文件扩展名:

由于Windows不显示已知的文件扩展名,有时当您认为您的文件名为file.yaml时,它实际上名为file.yaml.yaml。仔细检查文件的扩展名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值