在python中获取os.system的输出并在之后处理它

时间:2014-10-24 21:38:11

标签: python process grep operating-system system

我正在尝试做类似的事情:

f = subprocess.check_output("./script.sh ls -l test1/test2/test.log", shell=True)

当我打印f时,我得到值0.我尝试使用子进程然后读取()然后我不知道该文件的详细信息。我需要验证文件的大小..

不确定如何做到。

任何帮助?

当我使用

f = os.system("./script.sh ls -l test1/test2/test.log"),我得到输出但没有保存在f中。像stdoutput之类的东西..

更新: 我用了

f = os.popen("./script.sh ls -l test1/test2/test.log 2>&1")

如果我在上面的引号中运行相同的命令,直接在CLI上运行它,它工作正常但如果我在脚本中使用上面的内容或使用s = f.readline(),脚本会停止,我需要点击"返回"在脚本可以继续之前..

为什么?我需要'因为我需要处理它。

1 个答案:

答案 0 :(得分:1)

您可以使用subprocess.check_output

f = subprocess.check_output("./script.sh ls -l test1/test2/test.log",shell=True)
print(f)

您可以在不使用shell = True的情况下拆分为单个args的列表:

f = subprocess.check_output(['./script.sh', 'ls', '-l', 'test1/test2/test.log']))