Apabila menggunakan os.system() untuk melaksanakan perintah baris perintah, keperluan untuk melarikan diri dari nama fail dan argumen diluluskan sebagai parameter timbul, terutamanya dalam sistem pengendalian seperti bash. Berikut ialah kaedah yang berkesan untuk mencapai perkara ini:
Fungsi Melarikan Diri Menggunakan shlex.quote()
Python 3 menawarkan fungsi melarikan diri yang mudah dinamakan shlex.quote(). Fungsi ini dengan berkesan menukar mana-mana rentetan kepada versi yang dilepaskan dengan betul yang boleh digunakan dengan selamat sebagai hujah dalam panggilan os.system().
<code class="python">import shlex os.system(shlex.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>
Fungsi Escape untuk Python 2 dan 3
Jika anda memerlukan keserasian ke belakang dengan Python 2, anda boleh menggunakan fungsi pipes.quote dan bukannya shlex.quote(). Walau bagaimanapun, ambil perhatian bahawa paip telah ditamatkan penggunaannya dalam Python 3.10 dan akan dialih keluar dalam Python 3.13.
<code class="python">import pipes os.system(pipes.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>
Nota Tambahan tentang Keselamatan
While os.system() menawarkan kaedah mudah untuk melaksanakan arahan, adalah penting untuk mengetahui kebimbangan keselamatan. Berhati-hati apabila menerima input daripada sumber yang tidak dipercayai.
Atas ialah kandungan terperinci Bagaimanakah saya boleh melepaskan nama fail dan hujah untuk panggilan os.system() dengan selamat dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!