Python - 需要遍历目录寻找TXT文件

时间:2012-11-08 23:30:25

标签: python

我是一个完整的Python Newb

我需要遍历查找.txt文件的目录,然后单独读取和处理它们。我想设置它,以便脚本所在的任何目录都被视为此操作的根目录。例如,如果脚本位于/ bsepath / workDir中,那么它将循环遍历workDir及其子项中的所有文件。

到目前为止我所拥有的是:

#!/usr/bin/env python

import os

scrptPth = os.path.realpath(__file__)

for file in os.listdir(scrptPth)
    with open(file) as f:
        head,sub,auth = [f.readline().strip() for i in range(3)]
        data=f.read()
        #data.encode('utf-8')

pth = os.getcwd()

print head,sub,auth,data,pth

此代码给出了无效的语法错误,我怀疑这是因为os.listdir不喜欢标准字符串格式的文件路径。另外,我不认为我正在做循环行动。如何在循环操作中引用特定文件?它是否打包为变量?

任何帮助都是适当的

1 个答案:

答案 0 :(得分:3)

os.listdir期望一个目录作为输入。因此,要获取脚本所在的目录:

scrptPth = os.path.dirname(os.path.realpath(__file__))

此外,os.listdir仅返回文件名,而不是完整路径。 因此,除非当前工作目录恰好是脚本所在的目录,否则open(file)将不起作用。要解决此问题,请使用os.path.join

import os

scrptPth = os.path.dirname(os.path.realpath(__file__))

for file in os.listdir(scrptPth):
    with open(os.path.join(scrptPth, file)) as f:

最后,如果要通过子目录进行递归,请使用os.walk

import os

scrptPth = os.path.dirname(os.path.realpath(__file__))

for root, dirs, files in os.walk(scrptPth):
    for filename in files:
        filename = os.path.join(root, filename)
        with open(filename, 'r') as f:
            head,sub,auth = [f.readline().strip() for i in range(3)]
            data=f.read()
            #data.encode('utf-8')