Ich habe derzeit ein Problem bei der Verwendung von zwei Teilprozesse (ich werde mehr hinzufügen, wenn ich das behoben) in eine Datei zu drucken. Ich bekomme die Summe von awk und jetzt versuche ich es in eine Datei zu drucken und es wird nicht richtig gedruckt. Ich benutze Python 2.6 und es gibt keine Möglichkeit zu aktualisieren. Ich schließe meine Dateien auch am Ende meines Programms, das ist also nicht das Problem. edit: Der Zweck dieses Codes besteht darin, Dateien durchzulaufen und die Häufigkeit zu zählen, mit der eine bestimmte Zeichenfolge angezeigt wird. Legen Sie sie in Dateien und summieren Sie dann die Dateien in einer endgültigen Ausgabedatei.Mehrere Unterprozesse Drucken in Datei
def serv2Process(HOST = "testServer.com"):
encInTotal1 = 0
signInTotal1 = 0
p = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],
shell = False,
stdout = subprocess.PIPE,
close_fds = True)
for line in p.stdout:
if 'String to search'.lower() in line.lower():
totalCount1 = totalCount1 +1
if 'String 2 to search'.lower() in line.lower():
totalCount2 = totalCount2 +1
file1.write("%s\n" %totalCount1)
file2.write("%s\n" %totalCount2)
sys.stdout.flush()
p1 =threading.Thread(target = serv1Process, args=(HOST1,), name = 'serv1Process')
p2=threading.Thread(target = serv2Process, args= (HOST2,), name = 'serv2Process')
p1.start()
p2.start()
p1.join()
p2.join()
with open("SomeScriptName.%s" % strDateForm, 'w+')as search_file:
search_file.write("Header: ")
sys.stdout.flush()
proc = subprocess.Popen(['awk', '{sum+=$1} END {print sum}',"file1.%s" %strDateForm], shell=False, stdout=search_file,close_fds = True)
proc.wait()
search_file.write("\n")
search_file.write("Header2: ")
search_file.flush()
proc2 = subprocess.Popen(['awk', '{s+=$1} END {print s}',"file2.%s" %strDateForm], shell=False, stdout=search_file,close_fds = True)
proc2.wait()
file1.close()
file2.close()
Dies nur gedruckt die Header auf die Dateien, nicht das Ergebnis der Prozesse. – cvirus96
Sind Sie sicher, dass Ihr awk-Programm eine Ausgabe erzeugt? Versuchen Sie, die 'stderr'-Umleitung zu entfernen, wie ich vorgeschlagen habe, vielleicht erhalten Sie stattdessen einige Fehler durch den awk-Prozess. – mata
Ja. Wenn ich das mit einem Ausgang starte, funktioniert es einwandfrei. Aber sobald ich einen anderen Subprozess hineinwerfe funktioniert es nicht – cvirus96