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

Mary-Kate Olsen
Lepaskan: 2024-10-31 21:10:02
asal
818 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!