亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用格式在字符串中添加反斜杠

使用格式在字符串中添加反斜杠

達令說 2023-06-20 10:19:53
我在 mod 之后添加了一個反斜杠,我需要使用子進程執行它,但是在打印命令名稱時它使用 pdb 顯示雙反斜杠。command = "ffmpeg -i {} -vf 'select=not(mod(n\,{}))' -vsync -vfr -q:v 2 {} 2>NUL".format(vid, args.nfps, viddir + "/%06d.png")subprocess.call(command,shell=True)(Pdb) command"ffmpeg -i /home/ashutosh/Music/2020-07-24/DV1/0001.mp4 -vf 'select=not(mod(n\\,60))' -vsync -vfr -q:v 2 /home/ashutosh/Music/2020-07-24/DV1/0001/%06d.png 2>NUL"輸出應該像"ffmpeg -i /home/ashutosh/Music/2020-07-24/DV1/0001.mp4 -vf 'select=not(mod(n\,60))' -vsync -vfr -q:v 2 /home/ashutosh/Music/2020-07-24/DV1/0001/%06d.png 2>NUL"我試圖在格式中添加反斜杠,但隨后添加了更多反斜杠。無論如何要對此進行編碼,以便我得到一個反斜杠。
查看完整描述

3 回答

?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

正如其他人所指出的,實際上只有一個反斜杠,而不是兩個。


比使用反斜杠更好的解決方案是省略并將命令行作為列表shell=True傳遞。ffmpeg


command = [

    "ffmpeg", "-i", vid, "-vf", r"select=not(mod(n\,{}))".format(args.nfps), 

    "-vsync", "-vfr", "-q:v", "2", os.path.join(viddir, "%06d.png"),

]

subprocess.call(command, stderr=subprocess.DEVNULL)

這樣您就可以避免使用另一個組件(外殼),并且如果命令的任何部分來自用戶,您也可以避免創建安全漏洞。一般來說,最好shell=True盡可能避免。


查看完整回答
反對 回復 2023-06-20
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

只有一個反斜杠。您可以通過 確認這一點print(command)。您看到兩個反斜杠的原因是 pdb 在代碼中將值顯示為 Python 字符串,反斜杠通常需要在 Python 的字符串中進行轉義 — 事實上,您不應該在代碼中編寫,您應該"…\,…"編寫"…\\,…".?但由于\,不是已知的轉義序列,Python 可以這么說“讓它滑動”。

但請注意,通常在\字符串內部使用可能具有特殊含義,如果您想使用文字反斜杠,則需要將其轉義(即 write?\\)或者您需要使用原始字符串文字 (?r"…")。


查看完整回答
反對 回復 2023-06-20
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

如果你想在字符串中包含文字反斜杠,那么你的選擇是使用原始字符串(注意r開頭之前的'):


>>> s = r'foo\bar'

>>> print(s)

foo\bar

或者使用額外的反斜杠引用反斜杠:


>>> s = 'foo\\bar'

>>> print(s)

foo\bar

查看您擁有的內容的最佳方式是使用print.


請注意,如果您不使用print,而只是通過在交互式會話中鍵入變量名稱(包括在 中)來顯示字符串的內容pdb,那么這將等同于print(repr(s))- 換句話說,它打印的內容本質上是表達式需要在 Python 源代碼中使用以恢復原始字符串。因此,這將包括額外的反斜杠,如上所示:


>>> s

'foo\\bar'


>>> print(repr(s))

'foo\\bar'

但這并不意味著該字符串實際上包含兩個反斜杠。


查看完整回答
反對 回復 2023-06-20
  • 3 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號