我决定尝试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中仔细浏览文件。
答案 0 :(得分:5)
您正在重定向stdout
,但您的计划正在写入stderr
。修复方法是重定向stderr
:
$ sfood-checker path/to/folder 2> check.txt
或重定向 stdout
和stderr
:
$ sfood-checker path/to/folder &> check.txt
背景:当最初创建进程时,它们通常总是已经为它们打开了三个初始文件描述符:
0
,stdin,“标准输入”,只读流1
,标准输出,“标准输出”,只写流2
,stderr,“标准错误”,只写流除了约定和文件描述符编号之外,stdout
和stderr
之间的差异恰好为零。按照惯例,状态消息和其他“信息”内容输出到stderr(fwrite(stderr, informational_data);
的某个版本,程序正常操作所需的数据写入stdout。