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文件,所以我正如上所述。后来我试图打印我读到的内容。但是当我运行上述程序时,我没有得到任何输出。有人可以帮我解决那个错误吗?
答案 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()