月關(guān)寶盒
2019-11-28 13:01:32
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"])現(xiàn)在,我有了運行的腳本。當我運行它并到達此行時,它開始打印內(nèi)容,因為run.sh中有打印內(nèi)容。如何將其也管道傳輸?shù)轿谋疚募浚ㄈ绻赡?,還可以打印)
2 回答

白豬掌柜的
TA貢獻1893條經(jīng)驗 獲得超10個贊
如果要將輸出寫入文件,可以使用stdout -argument of subprocess.call。
它需要None,subprocess.PIPE個文件對象或一個文件描述符。第一個是默認值,stdout是從父級(您的腳本)繼承的。第二個允許您從一個命令/進程到另一個命令/進程。第三和第四項是您想要的,將輸出寫入文件。
您需要使用類似的文件打開文件,open然后將對象或文件描述符整數(shù)傳遞給call:
f = open("blah.txt", "w")
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=f)
我猜測任何有效的類似文件的對象都可以工作,例如套接字(gasp :)),但我從未嘗試過。
正如marcog在評論中提到的那樣,您可能還希望重定向stderr,您可以使用將其重定向到與stdout相同的位置stderr=subprocess.STDOUT。上述任何一個值也可以使用,您可以重定向到其他位置。
添加回答
舉報
0/150
提交
取消