簡體   English   中英

在sed命令的Python子進程中轉義

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM