【发布时间】:2019-03-13 07:57:00
【问题描述】:
我正在 python 中运行一个代码,它计算目录中存在的文件数`
hadoop fs -count /user/a909983/sample_data/ | awk '{print $2}'
这在 linux 命令行中成功返回 0,因为目录是 empty。但是当我在 python 脚本中运行它时,它返回 1 .python中的代码行是:
directoryEmptyStatusCommand = subprocess.call(
["hadoop", "fs", "-count", "/user/a909983/sample_data/", "|", "awk '{print $2}'"])
我该如何纠正这个问题?或者我错过了什么?我也尝试过使用Popen,但结果是一样的。
【问题讨论】:
-
如果你想使用shell的管道函数
|,你需要使用shell=True作为选项运行。在这种情况下,您应该使用字符串,而不是命令列表。但是,最好将此命令拆分为两个子进程,分别为hadoop和awk,然后通过 Python 管道传输数据。 -
-
@pygo 如果你只是删除你的答案会更好,因为它无论如何都是重复的。
标签: python subprocess