有人可以解释Python的子进程模块如何与命令提示符通信?

时间:2015-02-02 13:28:32

标签: python python-3.x cmd command-prompt

我对编程非常陌生并且一直在倾倒这个网站和其他人以更好地理解我如何编写Python(版本3.4.1)中的脚本,该脚本执行我已经知道如何在命令提示符(版本6.3)中执行的操作0.9600)。

在命令提示符中,我可以很容易地输入(在“>”之后):

Z:\input\convertToRinex.exe Z:\input\74390010.T01

一切都很完美。转换.T01文件,生成的文件显示在输入文件夹中。

在Python中我不知道我在做什么。我试过这个:

from subprocess import *
call(['Z:\input\convertToRinex.exe', 'Z:\input\74390010.T01'])

我收到此错误

Error: CtrimbleFile - unable to open file:Z:\psm_rinex\inputU90010.T01Open

在顶部显示Z:\ input \ convertToRinex.exe的窗口中。它发生得太快了,我不得不使用屏幕录像机来读取错误信息。

我认为Python中的列表将被翻译成与命令提示符中已有的完全相同的语法,并且会发生同样的事情。

我显然遗漏了一些东西。任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:3)

您需要转义\,使用正斜杠或使用原始字符串r

'Z:\\input\\74390010.T01' # double \
'Z:/input/74390010.T01' # forward / 
r'Z:\input\74390010.T01' # raw string


In [7]: print('Z:\input\74390010.T01')
Z:\inputǣ90010.T01

In [8]: print(r'Z:\input\74390010.T01')
Z:\input\74390010.T01

\用于escape个字符

答案 1 :(得分:1)

反斜杠在Python(和几乎所有其他编程语言)的字符串中具有特殊含义documented here,因此您需要编写

call(['Z:\\input\\convertToRinex.exe', 'Z:\\input\\74390010.T01'])

call([r'Z:\input\convertToRinex.exe', r'Z:\input\74390010.T01'])