2024-04-18 21:45:01 发布
网友
由于某些原因,我的代码在打开简单文件时遇到问题:
这是代码:
file1 = open('recentlyUpdated.yaml')
错误是:
IOError: [Errno 2] No such file or directory: 'recentlyUpdated.yaml'
open()
最有可能的问题是,您正在使用relative file path打开文件,但是current working directory没有设置为您认为的值。
相对路径是相对于python脚本的位置的,这是一个常见的误解,但这是不正确的。相对文件路径始终相对于当前工作目录,并且当前工作目录不必是python脚本的位置。
你有三个选择:
使用绝对路径打开文件:
file = open(r'C:\path\to\your\file.yaml')
生成相对于python脚本的文件路径:
from pathlib import Path script_location = Path(__file__).absolute().parent file_location = script_location / 'file.yaml' file = file_location.open()
(另请参见:How do I get the path and name of the file that is currently executing?)
打开文件前更改当前工作目录:
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 path in Python)
忘记Windows不显示文件扩展名:
由于Windows不显示已知的文件扩展名,有时当您认为您的文件名为file.yaml时,它实际上名为file.yaml.yaml。仔细检查文件的扩展名。
file.yaml
file.yaml.yaml
os.listdir()
os.getcwd()
os.chdir(dir)
dir
open
dir = r'C:\Python32'
'C:\\User\\Bob\\...'
'C:/Python32'
让我澄清一下Python如何查找文件:
working directory
如果您尝试执行open('sortedLists.yaml'),Python将看到您正在向它传递一个相对路径,因此它将在当前工作目录中搜索该文件。调用os.chdir将更改当前工作目录。
open('sortedLists.yaml')
os.chdir
示例:假设file.txt在C:\Folder中找到。
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
文件可能已存在,但路径可能不同。尝试写入文件的绝对路径。
尝试os.listdir()函数检查是否至少python看到该文件。
试试这个:
file1 = open(r'Drive:\Dir\recentlyUpdated.yaml')
最有可能的问题是,您正在使用relative file path打开文件,但是current working directory没有设置为您认为的值。
相对路径是相对于python脚本的位置的,这是一个常见的误解,但这是不正确的。相对文件路径始终相对于当前工作目录,并且当前工作目录不必是python脚本的位置。
你有三个选择:
使用绝对路径打开文件:
生成相对于python脚本的文件路径:
(另请参见:How do I get the path and name of the file that is currently executing?)
打开文件前更改当前工作目录:
其他可能导致“找不到文件”错误的常见错误包括:
在文件路径中意外使用转义序列:
要避免犯此错误,请记住对文件路径使用raw string literals:
(另请参见:Windows path in Python)
忘记Windows不显示文件扩展名:
由于Windows不显示已知的文件扩展名,有时当您认为您的文件名为
file.yaml
时,它实际上名为file.yaml.yaml
。仔细检查文件的扩展名。os.listdir()
查看当前工作目录中的文件列表os.getcwd()
的目录中(如果您从IDE启动代码,则很可能位于其他目录中)os.chdir(dir)
,dir
作为文件所在的文件夹 找到,然后像你一样用它的名字打开文件。open
调用中指定文件的绝对路径。dir = r'C:\Python32'
'C:\\User\\Bob\\...'
'C:/Python32'
,不需要转义。让我澄清一下Python如何查找文件:
working directory
的路径。您可以通过调用os.getcwd()
来查看Python的当前工作目录。如果您尝试执行
open('sortedLists.yaml')
,Python将看到您正在向它传递一个相对路径,因此它将在当前工作目录中搜索该文件。调用os.chdir
将更改当前工作目录。示例:假设
file.txt
在C:\Folder
中找到。要打开它,可以执行以下操作:
或者
文件可能已存在,但路径可能不同。尝试写入文件的绝对路径。
尝试
os.listdir()
函数检查是否至少python看到该文件。试试这个:
相关问题 更多 >
编程相关推荐