我正在尝试读取文件夹内的文件,原因是文件夹内的文件数量不固定,但如果有3个文本文件夹,我必须读取所有3个文件,如果4个全部4个文本文件
这是我正在尝试使用的代码,但提出了一个IOError:
for i in os.listdir("./RecordFolder"):
print i
输出是: record1.txt record2.txt
现在问题是阅读文件:
for files in os.listdir("./RecordFolder"):
filecontent = open(files).readlines()
for lines in filecontent:
print lines
输出:
IOError: [Errno 2] No such file or directory: 'record.txt'
在这需要一些帮助,谢谢
答案 0 :(得分:10)
函数os.listdir()
仅返回文件名,而不是完整路径,因此您应使用os.path.join()
添加目录名称:
directory = "./RecordFolder"
for filename in os.listdir(directory):
with open(os.path.join(directory, filename)) as f:
for line in f:
print line
(另请注意,您不应该使用file.readlines()
来简单地遍历文件行,并且您的代码无法关闭文件。这些问题已在上面的代码中修复。)
答案 1 :(得分:2)
os.listdir
仅返回文件夹中文件的名称。不是整条路径。
你想要这样的东西:
directory = os.path.join(os.curdir, "RecordFolder")
for files in os.listdir(directory):
filecontent = open( os.path.join(directory, files) ).readlines()
for lines in filecontent:
print lines
但这不是从文件中获取行的最佳方法。查看python上下文管理器 - 具体来说:
with open(filename) as f:
for line in f:
print line
这可确保文件正确关闭(即使出现错误 - 除非解释器本身存在分段错误或类似的事情)。