[英]Escaping in Python subprocess for sed command
我正在使用Python在子進程的幫助下進行sed刪除/替換。 不知何故我沒有得到正確的逃生次數。 這是我的代碼:
from subprocess import call
remover = ["sed", "-i", "'1d'", "file"]
call(remover)
removeq = ["sed", "-i", "'s/\"//g'", "file"]
call(removeq)
這兩個任務都會產生錯誤消息:
sed: -e expression #1, char 1: unknown command: `''
第一個列表中的“”符號需要轉出多少次?最后一個列表中的“”符號必須轉出多少次?我嘗試了一次,兩次和三遍,但無濟於事。也沒有隱藏可能會弄亂某些東西的字符。
有什么建議么?
修復報價機制:
sed -i 's/\"//g' file
應該只是:
sed -i 's/"//g' file
您也可以shlex
庫。 解釋器的示例:
>>> import shlex
>>> cmd = "sed -i '1d' file"
>>> shlex.split(cmd)
['sed', '-i', '1d', 'file']
>>> cmd = """sed -i 's/"//g' file"""
>>> shlex.split(cmd)
['sed', '-i', 's/"//g', 'file']
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.