在Python中的Bash命令

2024-04-19 18:38:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python运行一个代码,它计算目录中的文件数

hadoop fs -count /user/a909983/sample_data/ | awk '{print $2}'

这在linux命令行中成功地返回0,因为dir是空的。但是,当我在python脚本中运行这个命令时,它返回1

^{pr2}$

我该怎么更正?或者我错过了什么?。我也试过使用Popen,但结果是一样的。在


Tags: 文件sample代码命令行目录hadoopdatalinux
1条回答
网友
1楼 · 发布于 2024-04-19 18:38:33

使用subprocess.Popen并且不要使用管道|,因为它需要shell=True这是安全风险。所以,使用subprocess.PIPE,并将其与不带管道的subprocess.check_output一起使用,这是正确的方法。在

所以,你可以尝试一下:

command = subprocess.Popen(("hadoop", "fs", "-count", "/user/a909983/sample_data/") , stdout=subprocess.PIPE)
output = subprocess.check_output(("awk '{print $2}'"), stdin=command.stdout)

如果您想通过启用shell=True来尝试Shell命令:

^{pr2}$

相关问题 更多 >