Melepaskan Argumen Perintah dalam Panggilan os.system()
Apabila bekerja dengan os.system() dalam Python, memastikan pengendalian hujah yang betul adalah penting. Fail dan parameter lain selalunya memerlukan melarikan diri untuk mengelakkan gangguan dengan arahan shell. Berikut ialah panduan komprehensif untuk melepaskan hujah dengan berkesan untuk pelbagai sistem pengendalian dan cengkerang, terutamanya bash:
Menggunakan Petikan
Penyelesaian paling mudah ialah menyertakan hujah dalam petikan. Petikan tunggal (') menghalang pengembangan cangkerang, manakala petikan berganda (") membenarkan penggantian pembolehubah tetapi menyekat pengembangan pembolehubah dalam rentetan yang disebut. Pendekatan ini disokong secara meluas merentas platform dan cangkerang yang berbeza, termasuk bash:
<code class="python">os.system("cat '%s' | grep something | sort > '%s'" % (in_filename, out_filename))</code>
Menggunakan Modul shlex
Python menyediakan modul shlex yang direka khusus untuk tujuan ini Fungsi petikan()nya melepaskan rentetan untuk digunakan dalam cangkerang POSIX, termasuk bash:
<code class="python">import shlex escaped_in_filename = shlex.quote(in_filename) escaped_out_filename = shlex.quote(out_filename) os.system("cat {} | grep something | sort > {}".format( escaped_in_filename, escaped_out_filename))</code>
Menggunakan Modul paip (Amaran Penamatan!)
Untuk versi Python 2.x dan 3.x sehingga 3.10, pipes.quote daripada modul paip yang tidak digunakan boleh digunakan sebagai alternatif kepada shlex.quote. Harap maklum bahawa bermula dari Python 3.11, paip ditandakan untuk dialih keluar:<code class="python">from pipes import quote escaped_in_filename = quote(in_filename) escaped_out_filename = quote(out_filename) os.system("cat {} | grep something | sort > {}".format( escaped_in_filename, escaped_out_filename))</code>
Atas ialah kandungan terperinci Bagaimana untuk Melarikan Diri dari Argumen Perintah dengan Benar dalam Panggilan `os.system()` Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!