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

Can someone explain how Python's subprocess module communicates with Command Prompt?

我是编程的新手,一直在浏览本网站和其他网站,以更好地了解如何在 Python(版本 3.4.1)中编写一个脚本来执行我已经知道的操作在命令提示符(版本 6.3.9600)中。

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

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

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

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

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

我收到这个错误

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

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

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

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

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

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


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

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

\用于escape个字符

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

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

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