2017-01-11 188 views
0

這是我的情況:我有一些.txt文件在我可以運行腳本的不同目錄中。Python - 讀取其他文件夾/目錄中的文本文件

mainDir/ 
    -face/ 
     -57268-face-_tracker.txt 
     -glasses1.txt 
     -etc 

MAINDIR是在腳本應該運行。 所有.txt文件包含字符串是這樣的:

face=1 lefteye=closed righteye=closed 

我的目標是在文件夾中運行的所有.txt文件,併爲每個.TXT檢查,如果兩個眼睛是閉着的,如果是這樣,添加的東西到文本文件,例如:

face=1 lefteye=closed righteye=closed status=sleep 

到目前爲止,我可以運行該文件夾中的所有.txt文件,但我不能用一個打開它們一個 。

import os 


for file in os.listdir("face"): 
    if file.endswith(".txt"): 

    listdir = [] 
    listdir = file 
    print listdir 

有什麼建議嗎?在此先感謝

編輯 管理檢查每一個.txt和他們的字符串,但不能對它們進行比較

import os 
face = 'face' 
fileDir = os.path.dirname(os.path.realpath(__file__)) 
faceDir = os.path.join(fileDir,face) 

for file in os.listdir("face"): 
    if file.endswith(".txt"): 

    listdir = [] 
    listdir = file 
    print listdir 
    fpath = os.path.join(faceDir, listdir) 
    f = open(fpath) 
    print f.readline() 

回答

0

這是一個快速的嘗試,並有一些輕微的錯誤行爲(如反覆運行,它會繼續增加每個相關行的狀態)。

基本上,你是那裏的大部分。只是輸出每個循環的結果,在這種情況下通過編輯文件。

我已經使用str.count來評估哪些面孔睡着了,但有很多方法可以做到這一點。您可以將行分割爲"="和空格。

import os 

fileDir = os.path.dirname(os.path.realpath(__file__)) 
faceDir = os.path.join(fileDir, "face") 

for file in os.listdir("face"): 
    if file.lower().endswith(".txt"): 
     fpath = os.path.join(faceDir, file) 
     with open(fpath, 'r') as f: 
      content = f.readlines() 

     for i, line in enumerate(content): 
      if line.count("closed") == 2: 
       content[i] = line.strip() + " status=sleep\n" 

     with open(fpath, 'w') as f: 
      f.write(''.join(content)) 
+0

工作得很好,雖然它寫了兩次狀態。 非常感謝! –

相關問題