0

我正在尝试遍历特定路径中的所有文本文件,如下所示:

path = "c:\\Python27\\test"

with open(path+'\\*.txt') as fin:
print 'test'  

但这会返回:

[Errno 22] invalid mode ('r') or filename: 'C:\\Python27\\test\\*.txt'

为什么呢?什么是实现这一目标的简单方法?

4

2 回答 2

2

你可以这样试试

for (path, dirs, files) in os.walk("c:\\Python27\\test"):
    for f in files:
        if f.endswith('.txt'):
          print 'test'
于 2013-06-13T11:51:26.387 回答
1

两种简单的方法可能是:

import os
path = "c:\\Python27\\test"

for name in os.listdir(path):
    if name.endswith('.txt'):
        fpath = os.path.join(path, name)
        with open(fpath) as fin:
            print fpath, 'opened'

或者

import glob
path = "c:\\Python27\\test"

for fpath in glob.glob(os.path.join(path, '*.txt')):
    with open(fpath) as fin:
        print fpath, 'opened'

原因是open()必须得到一个有效的文件名。这些*东西是语法糖,必须单独处理。

于 2013-06-13T11:49:41.063 回答