循环通过python文件夹并打开文件throughs和错误

问题描述:

我试图循环浏览文件夹并读取文件,但只有第一个文件将打开并正确读取,但第二个文件打印名称并通过错误“IOError:[Errno 2 ] 无此文件或目录:”。我曾尝试以下循环通过python文件夹并打开文件throughs和错误

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: 
     ........ 
+0

该文件不是在'/ DataFiles',根据代码检索从'pathtodir \ DataFiles'列表行。您应该首先找出您要查找文件的位置,确定前向或反向(但不是两者),然后在使用该路径名时保持一致。你必须在同名文件夹中打开该文件;你的代码不会这样做,因为它试图在没有路径的情况下打开“filename”。您使用的代码尝试在三个不同的位置访问同一个文件,并且仅在其中一个位置。 –

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() 

使用os.listdir(...)只返回您通过目录的文件名,而不是完整路径的文件。打开文件时还需要包含相对目录路径。

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

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