Skip to main content
 首页 » 编程设计

python之"Error: File or directory does not exist"但正如 os.listdir 所确认的那样,它们确实存在

2025年05月04日17jyk

我正在编写一个程序,它应该从一个目录中读取多个 csv 文件并对每个文件进行一些分析。我有这些功能:

# Function reads in files and saves data into 2 dimensional array 
def ReadInFiles(name): 
  try: 
    data = [] 
    fname = csv.reader(open(name, 'r')) 
    #print 'read in file: ' + str(fname) 
    rowCount = 0 
    for row in fname: 
      if rowCount != 0: # skip headings 
        data.append(row) 
      rowCount += 1 
      #print name + ' ' + str(row) + ' read in successfully \n'                 
  except IOError: "Can't read files" 
 
 
  return data 
 
 
#Function reads in files in a folder   
def ReadDirectory (dirName): 
  try: 
    Data = []         
    for files in os.listdir(dirName): 
      print '\n FILE: ' + files 
      Data = ReadInFiles(files) 
      AnalyzeData(Data, daysElapsed, columns = 4) 
 
  except IOError: 
      print 'Directory does not exist!' 
 
  return 

奇怪的是,如果我忽略 ReadDirectory 函数而只使用 ReadInFile 函数,它会完美地工作(文件读入没有任何问题)但是一旦我从 ReadDirectory 调用 ReadInFunction,我得到错误 IOError: [Errno2 ] 文件或目录不存在:logfile.csv 使用 os.listdir 列出目录中的文件也很完美。

我将包含 csv 文件的文件夹作为包含源代码的目录中的子目录。我注意到,如果我也将这些文件的副本也放在源代码目录中,我的脚本可以完美运行,但如果我删除这些副本,我又会开始出现错误。

我搜索了以前的帖子并尝试了双斜杠,/但没有任何效果。我已经检查了该文件夹的权限,但它也无济于事。

任何帮助将不胜感激!!

谢谢。

附言我是 python 的新手,所以请原谅我可能有错误的代码

请您参考如下方法:

os.listdir() 返回不包含文件所在目录名称的裸文件名。

你的意思可能是:

 Data = ReadInFiles(os.path.join(dirName, files)) 

附言为什么 files 指的是单个文件名时是复数?

附言下面的 except block 没有做任何有用的事情并且悄悄地忽略了所有错误:

except IOError: "Can't read files"