Python:从目录读取所有文件
我正在尝试写一段代码,这段代码可以读取一个文件夹里的所有文本文件,并检查这些文件中是否有类似的内容:
'this is color=green'
'its color=orange'
然后它需要打印出特定的颜色。可是我的代码没有输出任何结果:
import os
path = r'C:\Python27'
data = {}
for dir_entry in os.listdir(path):
dir_entry_path = os.path.join(path, dir_entry)
if os.path.isfile(dir_entry_path):
with open(dir_entry_path, 'r') as my_file:
data[dir_entry] = my_file.read()
for line in my_file:
for part in line.split():
if "color=" in part:
print part
我希望输出的结果是这样的:
color=green
color=orange
我可以对单个文件做到这一点,但当涉及到文件夹时,我就得不到任何输出。
3 个回答
1
import os
path = r'C:\Python27'
data = {}
found = False
for dir_entry in os.listdir(path):
dir_entry_path = os.path.join(path, dir_entry)
if os.path.isfile(dir_entry_path):
with open(dir_entry_path, 'r') as my_file:
a = my_file.readlines()
for line in a:
for part in line.split():
if "color=" in part:
print part.split('=')[1]
编辑:根据评论修改了代码。
5
看起来你在读取文件内容的时候做了两次:
data[dir_entry] = my_file.read()
for line in my_file:
所以文件的全部内容都在 data[dir_entry] 里,而文件指针现在已经到达了 my_file 的末尾,已经没有东西可以读取了。如果你直接使用 'for line in my_file:' 这种方法,就应该可以正常工作:
for dir_entry in os.listdir(path):
dir_entry_path = os.path.join(path, dir_entry)
if os.path.isfile(dir_entry_path):
with open(dir_entry_path, 'r') as my_file:
for line in my_file:
for part in line.split():
if "color=" in part:
print part
1
正如其他回答提到的,你读取文件的次数太多了,所以指针已经移动到文件的末尾了。
如果你想要在打印相关颜色的行的同时,也能获取文件中的数据,你可以从数据中读取:
data = {}
for dir_item in os.listdir(path):
dir_item_path = os.path.join(path, dir_item)
if os.path.isfile(dir_item_path):
with open(dir_item_path, 'r') as f:
data[dir_item] = f.read()
for part in data[dir_item].split():
if part.startswith('color='):
print part[6:]