gpt4 book ai didi

python - 如何通过 Python 子进程模块将反斜杠作为参数传递?

转载 作者:太空宇宙 更新时间:2023-11-03 15:05:20 26 4
gpt4 key购买 nike

我想使用 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 程序。有没有办法将单个反斜杠传递给被调用的程序?

最佳答案

您对输出感到困惑。 Popen.communicate() 为您提供一个元组,其中包含 stdout 和 stderr 流。因为您得到一个元组,所以该元组的内容通过 repr() 函数显示。您的字符串值不包含双反斜杠,但由于此类反斜杠在 Python 字符串文字中具有特殊含义,因此它们以 Python 文字形式显示为双倍:

>>> value = r'foo\bar'
>>> value
'foo\\bar'
>>> print value
foo\bar
>>> print (value,) # tuple
('foo\\bar',)
>>> print (value,)[0] # back to one string
foo\bar

换句话说:这里没有问题,您得到的是单个反斜杠,但是 Python 为您提供了文字符号表示(为了便于调试)。

关于python - 如何通过 Python 子进程模块将反斜杠作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33489334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com