将命令赋给变量
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)