Python FileNotFoundError:[Errno 2]没有这样的文件或目录

Python FileNotFoundError:[Errno 2]没有这样的文件或目录,python,file,find,Python,File,Find,我试图打开一个CSV文件,但由于某种原因python无法找到它 这是我的代码(这只是一个简单的代码,但我无法解决问题): 您使用的是相对路径,这意味着程序将在工作目录中查找文件。错误是告诉您工作目录中没有该名称的文件 尝试使用精确的或绝对的路径。当您打开名为address.csv的文件时,您告诉open()函数您的文件在当前工作目录中。这称为相对路径 要了解这意味着什么,请将以下内容添加到代码中: import os cwd = os.getcwd() # Get the current w

我试图打开一个CSV文件,但由于某种原因python无法找到它

这是我的代码(这只是一个简单的代码,但我无法解决问题):


您使用的是相对路径,这意味着程序将在工作目录中查找文件。错误是告诉您工作目录中没有该名称的文件


尝试使用精确的或绝对的路径。

当您打开名为
address.csv
的文件时,您告诉
open()
函数您的文件在当前工作目录中。这称为相对路径

要了解这意味着什么,请将以下内容添加到代码中:

import os

cwd = os.getcwd()  # Get the current working directory (cwd)
files = os.listdir(cwd)  # Get all the files in that directory
print("Files in %r: %s" % (cwd, files))
它将打印当前工作目录以及其中的所有文件

告诉
open()
函数文件所在位置的另一种方法是使用绝对路径,例如:

f = open("/Users/foo/address.csv")
使用精确的路径

import csv


with open('C:\\path\\address.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

假设我们在“c:\script.py”中有一个脚本,其中包含:

result = open("index.html","r")
print(result.read())
假设index.html文件也在同一目录“c:\index.html”中 当我从cmd(或shell)执行脚本时

您将得到以下错误:

FileNotFoundError: [Errno 2] No such file or directory: 'index.html'
这是因为“index.html”不在工作目录“C:\Users\Amine>”中。因此,为了使其工作,您必须更改工作目录

C:\python script.py

'<html><head></head><body></body></html>'
C:\python script.py
''

这就是为什么最好使用绝对路径。

对于那些尽管传递了绝对路径但仍然出错的人,应该检查文件是否有有效名称。对我来说,我试图创建一个文件名中带有“/”的文件。我一删除“/”就可以创建该文件

with open(fpath, 'rb') as myfile:
    fstr = myfile.read()

我遇到这个错误是因为文件是空的。这个答案可能不是这个问题的正确答案,但应该给开发人员一个像我一样的提示。

与python(.py)代码在同一个文件夹中吗?您正在使用相对路径。如果不是,您需要提供完整路径,如
C:\folder\folder\address.csv
,如果您可以发布准确的错误,则很容易回答。@Cyber文件与包含源代码的目录不相关。它是相对于工作目录的。巧合的是,这些目录可能是相同的,但重要的是要精确。我忘了写权限,在那之后,我添加了“wb”并正常工作。谢谢,你是说应该始终使用绝对路径,而不应该使用相对路径吗?不,我是说最好使用绝对路径。如果脚本和输入文件都在同一个目录中,则“相对”应该可以工作。如果希望路径是相对的,则不是更好的选择。更重要的是,它是相对于工作目录和脚本目录的。好的,这是可行的,但是如果您想分发代码以便人们可以使用它呢?您不能期望绝对路径在该场景中工作,对吗?@abhishtagaya,在这种情况下,您必须设置环境变量以读取当前工作目录!
C:\python script.py

'<html><head></head><body></body></html>'
with open(fpath, 'rb') as myfile:
    fstr = myfile.read()