有人可以解释 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'])
我是编程的新手,一直在浏览本网站和其他网站,以更好地了解如何在 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'])