用python获取os.system的输出并在输出后进行处理

用python获取os.system的输出并在输出后进行处理,python,process,grep,operating-system,system,Python,Process,Grep,Operating System,System,我正在尝试做一些类似的事情: 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 = 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之类的东西

更新: 我曾经

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

为什么呢?我需要“s”,因为我需要处理它。

您可以使用:

您可以拆分为单个参数的列表,而无需使用shell=True:

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

请出示实际代码。这行
os.system
显然不是您运行的,因为它是一个语法错误,即使不是,您也几乎肯定会从
script.sh
中得到某种错误,因为它找不到名为
test.log,
的文件。“我尝试使用subprocess,然后读取()”意味着如果我们看到了您尝试的内容,您几乎肯定会错过一些我们可以向您解释的内容,但是如果没有看到任何内容,您就无法解释。是什么让您使用OS模块中的方法来检查文件的大小?OS.system或多或少被弃用,您应该改用功能更强大的。@inspectorG4dget:这个问题是关于获取在当前脚本/模块中定义或导入的函数调用的输出,而不是获取外部程序的输出。我肯定这是一堆问题,但我不认为这是正确的。@abarnert:用词来说,这个问题可能不完全一样。但解决方案确实超越了这个问题,变成了这个问题。因此,我投票赞成closureDpn在Unix上不使用没有
shell=True
的命令行;您将得到一个错误,即当前目录中没有任何名为
“script.sh ls-l test1/test2/test.log”
。@abarnert,我忘记了
shell=True
,我知道它是如何运行的works@abarnett-如果参数是序列(通常是列表),则不需要shell=True@abarnert已经按照Padraic Cunningham说的做了,但是程序在f=子进程行被卡住了。请检查出(..)并且似乎永远被卡住了!
f = subprocess.check_output("./script.sh ls -l test1/test2/test.log",shell=True)
print(f)
f = subprocess.check_output(['./script.sh', 'ls', '-l', 'test1/test2/test.log']))