簡體   English   中英

在Python subprocess.call()中轉義特殊字符(*)

[英]Escaping Special Characters (*) in Python subprocess.call()

我似乎無法轉義這些特殊字符-*。 我正在嘗試使用以下行的Python腳本復制一些文件

subprocess.call(r"mkdir E:\CONTENT\Full1",shell=True)
subprocess.call(r"copy","E:\DATA FOR CONTENT\*.*","E:\CONTENT\Full1",shell=True)
subprocess.call(r"fsutil file createnew ","E:\CONTENT\versionfile.txt","6500000",shell=True)

但是我在第二行收到以下錯誤

Traceback (most recent call last):
  File "basic1.py", line 9, in <module>
    subprocess.call(r"copy","E:\DATA FOR CONTENT\*.*","E:\CONTENT\Full1",shell=True)
  File "C:\Python34\lib\subprocess.py", line 537, in call
    with Popen(*popenargs, **kwargs) as p:
  File "C:\Python34\lib\subprocess.py", line 767, in __init__
    raise TypeError("bufsize must be an integer")
TypeError: bufsize must be an integer

我也討厭使用CSV樣式(“ arg1”,“ arg2” ...)傳遞它。 有什么辦法將其作為原始字符串傳遞嗎?

args應該是程序參數的序列,或者是單個字符串。

subprocess.call(["copy", r"E:\DATA FOR CONTENT\*.*", r"E:\CONTENT\Full1"], shell=True)

最好不要通過子流程執行此操作。 相信我,這是一個壞主意。

對於簡單的文件系統復制操作,請查看python shutil模塊

要創建新目錄,請使用os.makedirs

對於創建一定大小的文件,請參見此答案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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