2024-04-19 18:38:33 发布
网友
我用python运行一个代码,它计算目录中的文件数
hadoop fs -count /user/a909983/sample_data/ | awk '{print $2}'
这在linux命令行中成功地返回0,因为dir是空的。但是,当我在python脚本中运行这个命令时,它返回1
我该怎么更正?或者我错过了什么?。我也试过使用Popen,但结果是一样的。在
使用subprocess.Popen并且不要使用管道|,因为它需要shell=True这是安全风险。所以,使用subprocess.PIPE,并将其与不带管道的subprocess.check_output一起使用,这是正确的方法。在
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命令:
使用
subprocess.Popen
并且不要使用管道|
,因为它需要shell=True
这是安全风险。所以,使用subprocess.PIPE
,并将其与不带管道的subprocess.check_output
一起使用,这是正确的方法。在所以,你可以尝试一下:
如果您想通过启用
^{pr2}$shell=True
来尝试Shell命令:相关问题 更多 >
编程相关推荐