2016-04-09 40 views
1

benim alt yazı tarafından C++ Capture cout .cpp programı çalıştırın. Standart çıktımı (cout) C++ uygulamasında python'daki alt işlem tarafından yakalamak istiyorum. C++ 'da tüm kozlarımı tamponlayan ve ana()' de döndüren bir akış yapmaya çalıştım, ancak ana işlevde döndürdüğüm tek değer tamsayıdır. Yani benim sorum şu: başka bir şekilde değer vermek için python tarafından C++ yakalama yakalamak için başka bir olasılık var mı? Şimdiden teşekkürler! Bana ++ c COUTS içeren çıktı dosyası verir Daha önce kullanılan aşağıdaki satırı çağırmak için olanBenim django python betiğimde benim pythonscript

command = 'g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '"' 
process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) 
output = process.communicate() 
print output 

diğer olasılık,:

I ile POPEN kullanarak çalıştı. Python3 olarak

os.system('g++ -std=c++0x mutualcepepe.cpp -D "bomba = ' + str(strT) + '" -o mutualout') 
+0

Hangi sürüm python'u çalıştırıyorsunuz – Ben

+0

Sürümüm 2.7.6 – theCember

cevap

1

, bir alt işlemi stdout kapmak için en basit yol kullanmaktır subprocess.getoutput:

import subprocess 
output = subprocess.getoutput('ls ./my_folder') 
print(output) 

Bu yöntem Python3.5 değiştirilmiştir ve tavsiye edilen yöntem şu şekildedir:

result = subprocess.run(['ls', './my_folder'], stdout=subprocess.PIPE) 
print(result) 
print(result.stdout) 

stdout'u bir dizgeye de çevirmek isteyebilirsiniz:

result_string = result.stdout.decode('utf-8') 
İlgili konular