从目录内的文件读取时出错

时间:2012-08-03 13:39:27

标签: python

我正在尝试读取文件夹内的文件,原因是文件夹内的文件数量不固定,但如果有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'

在这需要一些帮助,谢谢

2 个答案:

答案 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

这可确保文件正确关闭(即使出现错误 - 除非解释器本身存在分段错误或类似的事情)。