首頁  >  文章  >  後端開發  >  如何安全地轉義 Python 中 os.system() 呼叫的檔案名稱和參數?

如何安全地轉義 Python 中 os.system() 呼叫的檔案名稱和參數?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-31 21:10:02819瀏覽

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

轉義os.system() 呼叫的參數

使用os.system() 執行命令列指令時,需要轉義作為傳遞的檔案名稱和參數參數的出現,特別是在bash 等作業系統中。以下是實現此目的的有效方法:

使用shlex.quote() 的轉義函數

Python 3 提供了一個名為shlex.quote() 的便捷轉義函數。此函數有效地將任何字串轉換為正確轉義的版本,可以安全地用作 os.system() 呼叫中的參數。

<code class="python">import shlex
os.system(shlex.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>

Python 2 和3 的轉義函數

如果需要向後​​相容Python 2,可以使用Pipes.quote 函數而不是shlex.quote() 。但是,請注意,管道已在 Python 3.10 中棄用,並將在 Python 3.13 中刪除。

<code class="python">import pipes
os.system(pipes.quote("cat %s | grep something | sort > %s" % (in_filename, out_filename)))</code>

有關安全性的附加說明

而 os.system()提供了一種執行命令的簡單方法,因此必須認識到安全問題。接受來自不受信任來源的輸入時請務必小心。

以上是如何安全地轉義 Python 中 os.system() 呼叫的檔案名稱和參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn