Jika Anda ingin menulis output ke file, Anda dapat menggunakan stdout -argument of subprocess.call
.
Dibutuhkan None
,, subprocess.PIPE
objek file atau deskriptor file. Yang pertama adalah defaultnya, stdout diwarisi dari induk (skrip Anda). Yang kedua memungkinkan Anda untuk menyalurkan dari satu perintah / proses ke yang lain. Yang ketiga dan keempat adalah apa yang Anda inginkan, agar keluaran ditulis ke file.
Anda perlu membuka file dengan sesuatu seperti open
dan meneruskan integer deskriptor objek atau file ke call
:
f = open("blah.txt", "w")
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=f)
Saya menduga objek seperti file yang valid akan berfungsi, seperti soket (terkesiap :)), tetapi saya belum pernah mencoba.
Seperti yang disebutkan oleh marcog di komentar Anda mungkin juga ingin mengarahkan stderr, Anda dapat mengarahkan ini ke lokasi yang sama dengan stdout stderr=subprocess.STDOUT
. Salah satu nilai yang disebutkan di atas berfungsi juga, Anda dapat mengarahkan ke tempat yang berbeda.
subprocess.call(["echo", "1", ">>", "t.txt"], shell=True)
seharusnya berfungsi.shlex.quote
apakah Anda mengirimkan data yang mungkin kotor ke subkulit.with open("blah.txt","w") as f: subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=f)
@SkurmedelOpsi untuk
popen
dapat digunakan dalamcall
Begitu...
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=myoutput)
Kemudian Anda dapat melakukan apa yang Anda inginkan
myoutput
(yang perlu berupa file btw).Selain itu, Anda dapat melakukan sesuatu yang lebih dekat dengan keluaran yang disalurkan seperti ini.
dmesg | grep hda
akan menjadi:
p1 = Popen(["dmesg"], stdout=PIPE) p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE) output = p2.communicate()[0]
Ada banyak info bagus dan berguna di halaman manual python .
sumber
Anda juga bisa memanggil skrip dari terminal, mengeluarkan semuanya ke file, jika itu membantu. Cara ini:
$ /path/to/the/script.py > output.txt
Ini akan menimpa file. Anda dapat menggunakan
>>
untuk menambahkannya.Jika Anda ingin kesalahan dicatat di file juga, gunakan
&>>
atau&>
.sumber