循环遍历python中的文件夹并打开文件会引发错误

时间:2017-03-08 22:55:25

标签: python

我尝试遍历文件夹并读取文件,但只有第一个文件打开并正确读取,但第二个文件打印名称并通过错误“IOError:[Errno 2]没有这样的文件或目录:”。我试过以下

for filename in os.listdir("pathtodir\DataFiles"):
    if filename.endswith(".log"): 
        print(os.path.join("./DataFiles", filename))

        with open(filename) as openfile:    
        for line in openfile:
        ........

2 个答案:

答案 0 :(得分:11)

os.listdir()只提供文件名,但不提供文件路径:

import os

for filename in os.listdir('path/to/dir'):
    if filename.endswith('.log'):
        with open(os.path.join('path/to/dir', filename)) as f:
            content = f.read()

或者,您可以使用glob模块。 glob.glob()功能允许您使用模式过滤文件:

import os
import glob

for filepath in glob.glob(os.path.join('path/to/dir', '*.log')):
    with open(filepath) as f:
        content = f.read()

答案 1 :(得分:1)

使用id仅返回您传递的目录的文件名,但不返回文件的完整路径。打开文件时,还需要包含相对目录路径。

os.listdir(...)