dosyasına yazıyorum. Herbiri stdout üreten iki program (derlenmiş C kodundan) yürütmek için altprocess.Popen kullanan bir python komut dosyası yazıyorum. Komut bu çıktıyı alır ve bir dosyaya kaydeder. Çıktı bazen altprogram.PIPE, komut dosyasının askıda kalmasına neden olacak kadar büyük olduğundan, stdout'u doğrudan günlük dosyasına gönderirim. Komut dosyamın başlangıcına ve sonuna bir şey yazmasını istiyorum ve iki alt işlem arasında .Popen çağrıları. Ancak, günlük dosyama baktığımda, komut dosyasından günlük dosyasına yazdığım her şey, dosyanın üst kısmında, sonra da tüm yürütülebilir stdout'lar tarafından izlenir. Eklenmiş metnimi dosyaya nasıl ekleyebilirim?Altprogramdan stdout'u kaydetme.Popen dosyasını dosyaya yazıp, daha fazla dosyaya
def run(cmd, logfile):
p = subprocess.Popen(cmd, shell=True, universal_newlines=True, stdout=logfile)
return p
def runTest(path, flags, name):
log = open(name, "w")
print >> log, "Calling executable A"
a_ret = run(path + "executable_a_name" + flags, log)
print >> log, "Calling executable B"
b_ret = run(path + "executable_b_name" + flags, log)
print >> log, "More stuff"
log.close()
günlük dosyası vardır: yürütülebilir B çağrılması yürütülebilir bir çağrılması Daha şeyler [... Her iki yürütülebilir gelen stdout'u ...]
ben A'nın stdout'u temizlemek bir yolu var mı Örneğin, Popen'i aradıktan sonra günlük? Alakalı olabilecek bir şey daha: Çalıştırılabilir A başlangıçlar B'ye bürünüyor ve B, bir şeyler basıp bitirdikten sonra, A daha fazla şey basıyor ve bitiriyor.
RHE Linux üzerinde Python 2.4 kullanıyorum.
stdout = subprocess.PIPE kullanıldığında ve dış döngü her şeyi günlük dosyasına yazdığında, kendi metnimi yürütücünün çıktısıyla arayabilirdim. Metin eklemediğimde, günlüğün içeriği şu sırayla olur: 1) Bir çıkış 2) B çıkışı 3) geri kalan A çıkışı. Bu adımlardan önce veya sonra metin ekleyebilirim. Şimdi sadece günlüğün başlangıcında veya sonunda metin ekleyebilirim. Popen komut dosyasını çektikten sonra bekle() ekledikten sonra B A bitene kadar başlamaz, çünkü A olmazsa olmaz, çünkü A, el sıkışmasını B'den bekler. Bu yaklaşımla günlük metninde kendi aramamı ayırmak mümkün mü? – jasper77