【问题标题】:Python subprocess.check_output recieves extra form feed (0x0c) characterPython subprocess.check_output 收到额外的换页符 (0x0c) 字符
【发布时间】:2013-12-19 13:08:39
【问题描述】:
>>> subprocess.check_output(['svn', '--version', '--quiet'], shell=True)
'\x0c1.6.16\r\n'
>>> subprocess.check_output(['svn', '--version', '--quiet'])
'1.6.16\r\n'

在 Windows、Python 2.7 上,当 shell=True 传递给 subprocess.check_output 时,我得到一个额外的 \x0c 字符。这不是预期的行为,因为它破坏了来自 depot_tools 的 Chromium 的 gclient.py。它尝试检查 svn 版本是否最低 1.4,并且对 0x0c 感到惊讶。然后一切都爆炸了。

我不知道为什么会发生这种情况以及这意味着什么。我该如何解决这个问题?我不想从破解 gclient.py 开始,因为它适用于其他所有人。谷歌搜索这个问题没有得到任何结果。

【问题讨论】:

  • 请再次运行subprocess.check_output(['svn', '--version', '--quiet'], shell=True)。它应该提出CalledProcessError。你的意思是subprocess.check_output('svn --version --quiet', shell=True)
  • 我怀疑你将不得不临时修补它并向模块作者提出问题,或者你的意思是它适用于所有使用 Windows 和 Python2.7 的人?
  • 间接级别?在使用之前从一开始就去除“空白”?顺便说一句,如果我在 Windows 7 上使用针对 git 的 python 2.7 而不是 svn 执行此操作,我不会得到额外的字符。
  • @doctorlove 我试图从我的控制台调用 git,但它根本不起作用。我的 cmd 有问题。我最后尝试了一些 hacky cmd 教程,但我没有注意到它现在有问题。我不经常使用它,其他程序也有效......我会试着弄清楚。谢谢大家的cmets。
  • 对不起,如果我听起来很粗鲁,当你说“它”不起作用时,我误解了。很高兴您解决了问题。

标签: python windows svn subprocess chromium


【解决方案1】:

doctorlove发表评论后,我想看看subprocess.check_output(['git', '--version'], shell=True) 会返回什么。但它甚至没有从 cmd 启动......出了点问题。 然后我删除了几天前添加的注册表项HKCU\Software\Microsoft\Command Processor\AutoRun。现在一切正常。该键本应在 cmd 启动时处理自动运行批处理脚本,但由于某种原因,它破坏了 cmd 中一些与字符相关的内容。

【讨论】:

  • 听起来你的 shell 有一个启动脚本,它发出一个 \x0C 字符
  • 当然……现在看起来很明显。我不知道这怎么可能,因为那个脚本并不是要打印任何东西,但这一定是原因。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
  • 2018-12-21
  • 2010-11-15
  • 1970-01-01
  • 2012-11-24
  • 2021-01-27
相关资源
最近更新 更多