“错误:文件或目录不存在”但它们确实存在,如os.listdir所确认

时间:2012-02-06 16:52:42

标签: python

我正在编写一个程序,该程序应该读取目录中的许多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文件的文件夹作为包含源代码的目录中的子目录。我注意到如果我将文件的副本也放在源代码目录中,我的脚本运行得很好但是如果我删除这些副本,我会再次开始收到错误。

我搜索过以前的帖子,尝试过双斜线,/但没有任何效果。我已经检查了文件夹的权限,但它也没有帮助。

任何帮助将不胜感激!!

谢谢。

P.S。我是python的新手,所以请原谅我可能不好的代码

1 个答案:

答案 0 :(得分:6)

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

你可能意味着:

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

P.S。为什么files在引用单个文件名时是复数?

P.P.S。以下except块没有做任何有用的事情,并且悄悄忽略所有错误:

except IOError: "Can't read files"