【问题标题】:Can someone explain how Python's subprocess module communicates with Command Prompt?有人可以解释 Python 的子进程模块如何与命令提示符通信吗?
【发布时间】:2015-02-02 13:28:31
【问题描述】:

我对编程非常陌生,并且一直在倾注于这个网站和其他网站,以更好地了解我如何用 Python(3.4.1 版)编写一个脚本,该脚本执行我已经知道如何在命令提示符(6.3 版)中执行的操作.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 中的列表会被翻译成在命令提示符中已经可以使用的完全相同的语法,并且会发生同样的事情。

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

【问题讨论】:

  • "在 Python 中我不知道自己在做什么。" - 一个好的开始是阅读relevant documentation 并学习该语言的基础知识,例如字符串是如何工作的。
  • 永远不要编辑包含“固定”或类似内容的问题。使用编辑添加或更正信息;修复语法或拼写错误等。所以不是论坛,我建议您再次阅读游览和帮助中心。

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


【解决方案1】:

您需要转义\,使用正斜杠或使用原始字符串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 字符

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-07-30
      • 2016-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2019-05-25
      • 1970-01-01
      相关资源
      最近更新 更多