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