2017-01-11 6 views
0

Hier ist meine Situation: Ich habe einige TXT-Dateien in einem anderen Verzeichnis, von wo aus ich das Skript ausführen kann.Python - Lesen von Textdateien in einem anderen Ordner/Verzeichnis

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

mainDir ist der Ort, an dem das Skript ausgeführt werden soll. Alle TXT-Dateien enthalten Strings wie folgt aus:

face=1 lefteye=closed righteye=closed 

Mein Ziel ist es, alle TXT-Dateien in dem Ordner zu laufen, und für jede .txt zu prüfen, ob beide Augen geschlossen sind, wenn ja, fügen Sie etwas zu der Textdatei, Beispiel:

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

Bisher kann ich alle TXT-Dateien im Ordner laufen, aber ich kann ihnen ein durch ein öffnen.

import os 


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

    listdir = [] 
    listdir = file 
    print listdir 

Irgendwelche Vorschläge? Vielen Dank im Voraus

bearbeiten verwalten jede .txt und ihre Saiten zu überprüfen, aber kann nicht vergleicht ihnen

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() 

Antwort

0

Dies ist ein kurzer Versuch und hat einig leicht fehlerhaftes Verhalten (wenn wiederholt ausführen, wird es fügen Sie jeder relevanten Zeile den Status hinzu).

Im Grunde genommen warst du am meisten unterwegs. Nur ein Fall der Ausgabe des Ergebnisses jeder Schleife, in diesem Fall durch Bearbeiten der Dateien.

Ich habe str.count verwendet, um zu beurteilen, welche Gesichter schlafen, aber es gibt viele Möglichkeiten, es zu tun. Sie können die Zeile nach "=" und Leerzeichen aufteilen.

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

funktioniert gut, obwohl es den Status zweimal schreibt. Vielen Dank! –

Verwandte Themen