Cara Menyalurkan String ke dalam subproses.Popen melalui Argumen Stdin
Fungsi subproses.Popen membolehkan skrip Python menghasilkan proses baharu dan berinteraksi dengan input, output dan ralat standard mereka. Satu kes penggunaan biasa melibatkan penghantaran data kepada proses anak melalui stdinnya, yang boleh dicapai dengan menentukan stdin=PIPE semasa penciptaan objek.
Walau bagaimanapun, percubaan untuk menggunakan objek cStringIO.StringIO sebagai strim stdin menghasilkan ralat, kerana ia tidak mempunyai atribut fileno yang dijangkakan oleh subprocess.Popen. Untuk menyelesaikan isu ini, gunakan teknik berikut:
Menggunakan Popen.communicate()
Seperti dokumentasi rasmi, Popen.communicate() menjangkakan data akan dihantar melalui parameter input, bukannya aliran stdin. Ubah suai kod anda kepada:
1 2 3 4 5 |
|
Menggunakan subprocess.run (Python 3.5 )
Untuk Python versi 3.5 dan ke atas, subprocess.run menyediakan cara yang mudah untuk mengurus subproses. Ia membolehkan anda menghantar input rentetan dan mendapatkan output rentetan dalam satu panggilan fungsi:
1 2 3 4 5 6 7 |
|
Dengan menggunakan pendekatan ini, anda boleh menghantar rentetan ke dalam subproses dengan berkesan. Buka melalui hujah stdin, membolehkan program anda untuk berinteraksi dengan lancar dengan proses luaran.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Menyalurkan String ke subprocess.Popen's stdin?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!