Unabe用Python

时间:2017-05-31 01:10:58

标签: python list function loops

我有一个包含40个文件的文件夹,我想循环播放。当我打印出文件的名称时,我的代码工作正常:

import os
source = 'pathtofile'
for root, dirs, filenames in os.walk(source):
    for file in filenames:
        print file

它将打印:

File1中

文件2

档案3

.....

档案40

但是如果我尝试在循环中打开文件/文件,我会收到以下错误。 IO错误: IOError:[Errno 2]没有这样的文件或目录:'file.txt'

这是我遇到问题的代码:

import os
import re

destdir = 'pathtofile'
files = [ f for f in os.listdir(destdir) if 
os.path.isfile(os.path.join(destdir,f)) ]

for f in files:
    with open(f, 'r') as var1:
        for line in var1: 
            if re.match('(.*)exception(.*)', line):
                print line

我已经验证了,我正在搜索的字符串,它确实存在于文件中。

您能否就我的代码有什么问题提供一些见解?感谢。

1 个答案:

答案 0 :(得分:1)

这就是你想要的:

from os.path import join, isfile

files = [join(destdir, x) for x in os.listdir(destdir) if isfile(join(destdir, x))]

或者如果您知道所有文件都有.txt扩展名,则可以执行以下操作:

from glob import glob

files = glob(join(destdir, '*.txt'))