簡體   English   中英

Python:從目錄讀取所有文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM