【问题标题】:FileNotFoundError: [Errno 2] No such file or directory [duplicate]FileNotFoundError:[Errno 2]没有这样的文件或目录[重复]
【发布时间】:2014-04-12 12:41:24
【问题描述】:

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

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

import csv

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

【问题讨论】:

  • address.csv 是否与您的 python (.py) 代码位于同一文件夹中?您正在使用相对路径。如果不是,您需要提供完整路径,例如 C:\folder\folder\address.csv
  • 如果您可以发布确切的错误,那将很容易回答。
  • @Cyber​​ 该文件与包含源代码的目录无关。它是相对于工作目录的。巧合的是,这些目录可能相同,但准确无误很重要。
  • 我忘记写权限了,之后,我添加了“wb”并正常工作。谢谢

标签: python file find


【解决方案1】:

当您打开一个名为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")

【讨论】:

    【解决方案2】:

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

    尝试使用确切或绝对路径。

    【讨论】:

    • 好的,但是如果您想分发代码以便人们使用它怎么办?你不能指望绝对路径在那种情况下有效吗?
    • @AbhishtaGatya,在这种情况下,您必须设置环境变量才能读取当前工作目录!
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:
      with open(fpath, 'rb') as myfile:
          fstr = myfile.read()
      

      我遇到此错误是因为文件为空。这个答案可能不是这个问题的正确答案,但希望它能给你们一些提示。

      【讨论】:

        【解决方案5】:

        使用准确的路径。

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

        【讨论】:

        • 你是说绝对路径应该一直使用,相对路径不应该使用?
        • 没有。我是说最好使用绝对路径。如果脚本和输入文件都在同一个目录中,那么相对应该可以工作。
        • 如果您希望路径是相对的,那就不是更好了。更重要的是,它是相对于工作目录和脚本目录的。
        【解决方案6】:

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

        result = open("index.html","r")
        print(result.read())
        

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

        C:\Users\Amine>python c:\script.py
        

        你会得到错误:

        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>'
        

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-03
          • 2021-08-24
          • 2021-03-07
          • 2015-06-09
          相关资源
          最近更新 更多