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

Mary-Kate Olsen
發布: 2024-10-31 21:10:02
原創
818 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!