【发布时间】:2014-12-20 19:24:15
【问题描述】:
我正在尝试做类似的事情:
f = subprocess.check_output("./script.sh ls -l test1/test2/test.log", shell=True)
当我打印 f 时,我得到值 0。我尝试使用 subprocess 然后 read() ,即使这样我也没有得到文件的详细信息。我需要验证文件的大小..
不确定如何实现。
有什么帮助吗?
当我使用时
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 上直接在 CLI 上运行相同的命令,但如果我在脚本中使用上述命令或使用 s = f.readline(),脚本将停止,我需要在脚本之前点击“return”可以继续了。。
这是为什么呢?我需要 's' 因为我需要处理它。
【问题讨论】:
-
请显示实际代码。
os.system行显然不是你运行的,因为它是一个 SyntaxError,即使不是,你几乎肯定会从script.sh得到某种错误,因为它找不到名为 @987654328 的文件@。并且“我尝试使用子进程然后 read()”意味着您几乎肯定错过了一些我们可以向您解释的东西,如果我们看到您尝试过的内容,但没有看到任何东西就无法解释。 -
使用 OS 模块中的方法检查文件大小的原因是什么?
-
os.system 或多或少已被弃用,您应该改用更强大的subprocess module。
-
@inspectorG4dget:这个问题是关于获取在当前脚本/模块中定义或导入的函数调用的输出,而不是获取外部程序的输出。我敢肯定这是一堆问题,但我认为这不是正确的。
-
@abarnert:按照措辞,这个问题可能并不完全相同。但解决方案确实超越了这个问题。这就是为什么我投票支持关闭
标签: python process grep operating-system system