从python脚本中的文件夹中读取.txt文件

时间:2015-12-16 08:41:51

标签: python python-2.7 wxpython ipython

directory =os.path.join("C:\\Users\\Desktop\\udi\\pcm-audio") 
for subdir, dirs, files in os.walk(directory): 
    for file in files: 
        if file.endswith(".txt"): 
            f=open(os.path.join(subdir, file),'r') 
            a = f.read() 
            if re.findall('\"status_code\": 0', a):
                print('Valid one') 
            else: 
                print('Invalid') 
        f.close()

我必须只读取文件夹中的.txt文件,所以我正如上所述。后来我试图打印我读到的内容。但是当我运行上述程序时,我没有得到任何输出。有人可以帮我解决那个错误吗?

2 个答案:

答案 0 :(得分:2)

使用以下内容:

...  
f=open(os.path.join(subdir, file),'r')  
...

将分隔符/替换为\(Python2),\\(Python3)。

要阅读特定的行,您可以使用linecache

import linecache
linecache.getline(filename, linenumber)

答案 1 :(得分:1)

f=open(os.path.join(subdir, file),'r')  

zetysz回答是对的。 问题出在您提供的包含反斜杠的起始目录路径中。

您可以将其更改为正斜杠/而不是反斜杠\,如下所示:

directory = os.path.normpath("C:/Users/sam/Desktop/pcm-audio")

或者您可以使用双反斜杠来引用它们:

directory = os.path.normpath("C:\\Users\sam\\Desktop\\pcm-audio")

还使用os.path.normpath来规范化路径。你不需要os.path.join,因为你没有加入任何东西。

所以这应该有效:

import os

directory = os.path.normpath("C:/Users/sam/Desktop/pcm-audio")
for subdir, dirs, files in os.walk(directory):
    for file in files:
        if file.endswith(".txt"):
            f=open(os.path.join(subdir, file),'r')
            a = f.read()
            print a
            f.close()