[英]Python: read all files from directory
我正在嘗試編寫代碼,該代碼將從目錄中讀取所有文本文件,並查找是否有文件具有如下文本:
'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
我可以為單個文件執行此操作,但是當涉及目錄時,我不會得到輸出。
看來您正在讀取文件內容兩次:
data[dir_entry] = my_file.read()
for line in my_file:
因此,文件的全部內容都在data [dir_entry]中,並且文件句柄現在位於my_file的末尾,沒有任何要讀取的內容。 如果僅使用“在my_file中的for行:”方法,則該方法應該有效:
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
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]
編輯:根據注釋更改了代碼,
如其他答案中所述,您正在讀取文件兩次,因此指針位於文件的末尾。
如果您實際上希望與文件內容一起傳播數據並打印相關的色線,則可以從數據中讀取:
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:]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.