我想用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
对不起,我没有看到! –