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