我正在编写一个程序,该程序应该读取目录中的许多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的新手,所以请原谅我可能不好的代码
答案 0 :(得分:6)
os.listdir()
返回不包含文件所在目录名称的裸文件名。
你可能意味着:
Data = ReadInFiles(os.path.join(dirName, files))
P.S。为什么files
在引用单个文件名时是复数?
P.P.S。以下except
块没有做任何有用的事情,并且悄悄忽略所有错误:
except IOError: "Can't read files"