GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara menyalurkan panggilan subproses ke file teks?

Opsi untuk popen dapat digunakan di call

args, 
bufsize=0, 
executable=None, 
stdin=None, 
stdout=None, 
stderr=None, 
preexec_fn=None, 
close_fds=False, 
shell=False, 
cwd=None, 
env=None, 
universal_newlines=False, 
startupinfo=None, 
creationflags=0

Jadi...

myoutput = open('somefile.txt', 'w')
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml",  "/tmp/video_xml"], stdout=myoutput)

Kemudian Anda dapat melakukan apa yang Anda inginkan dengan myoutput

Selain itu, Anda dapat melakukan sesuatu yang lebih mirip dengan output 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.


Jika Anda ingin menulis output ke file, Anda dapat menggunakan argumen stdout dari subprocess.call .

Dibutuhkan keduanya

  • None (defaultnya, stdout diwarisi dari induk (skrip Anda))
  • subprocess.PIPE (memungkinkan Anda untuk mem-pipe dari satu perintah/proses ke yang lain)
  • objek file atau deskriptor file (apa yang Anda inginkan, agar hasilnya ditulis ke file)

Anda perlu membuka file dengan sesuatu seperti open dan berikan bilangan bulat 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 mencobanya.

Seperti yang disebutkan marcog di komentar, Anda mungkin ingin mengarahkan stderr juga, Anda dapat mengarahkan ini ke lokasi yang sama dengan stdout dengan stderr=subprocess.STDOUT . Salah satu dari nilai yang disebutkan di atas juga berfungsi, Anda dapat mengalihkan ke tempat yang berbeda.


Linux
  1. Bagaimana Menemukan Tanda Kurung yang Tak Tertandingi Dalam File Teks?

  2. Bagaimana cara menyisipkan teks di awal file?

  3. Cara grep \n dalam file

  1. Cara Menambahkan Teks ke Akhir File di Linux

  2. Cara mengedit file teks di terminal saya

  3. Cara membuka file di vim menggunakan pipa

  1. Cara Mudah Menambahkan Teks ke Akhir File di Linux

  2. Bagaimana Cara Menghapus Garis Duplikat Di Dalam File Teks?

  3. Bagaimana Cara Memindahkan Garis Dalam File Teks Ke Atas Atau Ke Bawah Dengan Satu Baris?