Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh melepaskan nama fail dan hujah untuk panggilan os.system() dengan selamat dalam Python?

Bagaimanakah saya boleh melepaskan nama fail dan hujah untuk panggilan os.system() dengan selamat dalam Python?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-31 21:10:02819semak imbas

How can I safely escape filenames and arguments for os.system() calls in Python?

Melepaskan Argumen untuk Panggilan os.system()

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn