我想用Python的子進程來調用一個命令行程序,它需要一個路徑作爲參數傳入。因爲這是在Windows上,所以路徑包含反斜槓。我已經嘗試了許多選項供子收到與設置打印出來的路徑參數的程序幾個在這裏的是:如何通過Python子進程模塊將反斜槓作爲參數傳遞?
轉義反斜線:
>>> cmd = ['f:\\code\\Util.exe', '-i', 'c:\\Users\\paul\\data.xml']
>>> subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> subprocess.communicate()
('Input path: c:\\Users\\paul\\data.xml\n', '...')
單反斜線,RAW格式:
>>> cmd = ['f:\\code\\Util.exe', '-i', r'c:\Users\paul\data.xml']
>>> subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> subprocess.communicate()
('Input path: c:\\Users\\paul\\data.xml\n', '...')
單反斜線:
>>> cmd = ['f:\\code\\Util.exe', '-i', 'c:\Users\paul\data.xml']
>>> subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
>>> subprocess.communicate()
('Input path: c:\\Users\\paul?5data.xml', '...')
在每種情況下,巴ckslashes以雙反斜槓的形式傳遞給Windows程序。有沒有辦法將單個反斜槓傳遞給被調用的程序?
使用帶'r'thisisyourstring'''r'前綴的'raw str' –
@R Nar:恩,是不是我在上面的第二個例子中做了什麼? – Pawelek
對不起,我沒有看到! –