0

我正在尝试读取文件夹内的文件,原因是文件夹内的文件数量不固定,但如果有 3 个文本文件夹,如果 4 个所有 4 个文本文件,我必须读取所有 3 个文件。

这是我尝试使用的代码,但出现了 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'

这里需要帮助,谢谢

4

2 回答 2

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()简单地遍历文件的行,并且您的代码无法关闭文件。这些问题已在上面的代码中修复。)

于 2012-08-03T13:40:40.007 回答
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

这可以确保文件被正确关闭(即使发生错误——除非解释器本身出现分段错误或类似的奇怪情况)。

于 2012-08-03T13:40:24.217 回答