最近工作需要python 执行hadf命令,并获取返回结果,总结如下

将命令赋给变量

cmd = 'hadoop fs -ls location'

执行下面的命令可以获取返回结果

try:
    res = subprocess.Popen(cmd,shell=True,stdin=PIPE,stdout=PIPE,cwd=r'\DB',universal_newlines = True)
    res.wait()
    print('任务调用完毕,等待结果输出', res.stdout.read()) #正常输出
except Exception as e:
    print(res.stderr.read()) #异常输出
    print('异常',e)

universal_newlines = True,为True以字符串结果,为False以二进制输出结果。

如果命令是类似cmd = r‘ping -t baidu.com' 其结果是持续输出的,上述的方式则会在res.stdout.read()这个地方阻塞,这时可以把内容输出到文件中。

fp = open(file="process.txt", mode="w",encoding='utf8')
subprocess.Popen(cmd, shell=True, stdout=fp,universal_newlines=True)

有时候需要打开一个命令行窗口,并切换至指定目录,则需要

res = subprocess.Popen('cmd',cwd=r'C:\tangwendi\DB',creationflags=CREATE_NEW_CONSOLE)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值