【发布时间】:2016-02-03 00:40:11
【问题描述】:
我想使用 Python 的子进程来调用命令行程序,该程序需要将路径作为参数传入。因为这是在 Windows 上,所以路径包含反斜杠。我尝试了许多选项,其中一些选项设置为打印出从子进程接收到的路径参数:
转义的反斜杠:
>>> 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', '...')
单反斜杠,原始格式:
>>> 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', '...')
在任何情况下,反斜杠都会作为双反斜杠传递给 Windows 程序。有没有办法将单个反斜杠传递给被调用的程序?
【问题讨论】:
-
使用带有
r'thisisyourstring'r前缀的raw str -
@R Nar:呃,这不是我在上面第二个例子中所做的吗?
-
对不起,我没看到!
-
输出是给你单斜杠。但是输出被转义为 Python 字符串文字。这里没有问题。
-
@Busturdust:我同意它更干净,但它仍然不起作用:)
标签: python subprocess command-line-arguments