">"不工作直接输出python命令到文件

时间:2018-02-13 14:27:22

标签: python linux bash macos python-2.7

我决定尝试snakefood来帮助重构以检查导入。它不断将输出转储到屏幕上,并且">"不会将其发送到文件,它只是创建一个空文件。

我不得不用Python 2.7创建一个virtualenv,因为它可能在Python 3中无法正常工作。尽管如此,它可能会检查Python 2项目,即使它是用Python 2编写的。我使用的是Mac,但是它似乎在命令行上使用类似于Linux的命令。

我做了

pip install six
pip install graphviz
pip install snakefood

一旦Python 2环境被激活。

然后如果我输入

$ sfood-checker path/to/folder

..它会在屏幕上转储大量文字,但

$ sfood-checker path/to/folder > check.txt

..只创建一个空文件。知道什么是错的,如何解决?想在sublime中仔细浏览文件。

1 个答案:

答案 0 :(得分:5)

您正在重定向stdout,但您的计划正在写入stderr。修复方法是重定向stderr

$ sfood-checker path/to/folder 2> check.txt

或重定向 stdoutstderr

$ sfood-checker path/to/folder &> check.txt

背景:当最初创建进程时,它们通常总是已经为它们打开了三个初始文件描述符:

  • 0,stdin,“标准输入”,只读流
  • 1,标准输出,“标准输出”,只写流
  • 2,stderr,“标准错误”,只写流

除了约定和文件描述符编号之外,stdoutstderr之间的差异恰好为零。按照惯例,状态消息和其他“信息”内容输出到stderr(fwrite(stderr, informational_data);的某个版本,程序正常操作所需的数据写入stdout。