我正在编写一个程序,它应该从一个目录中读取多个 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"
