gpt4 book ai didi

python子进程和grep命令

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:06:57 25 4
gpt4 key购买 nike

我正在用 Python 编写脚本程序。在这个程序中,我需要获取文件名的 grep 结果并从中提取文件名。我现在被“grep”困住了。我尝试 grep 一个名为 NoMoreHotCorner_20151006.T 的文件并返回结果。我的预期结果应该如下:

grep: command/CVS: Is a directory
grep: command/obsolete: Is a directory
command/yosemite-2015.K:#p system/NoMoreHotCorner_20151006.T

我可以保证这个文件是存在的,我的路径没有问题。

我可以通过使用 os.system() 获得所需的结果。

>>> import os
>>> from subprocess import Popen, PIPE
>>> from subprocess import CalledProcessError, check_output
>>> string = 'grep '+'NoMoreHotCorner_20151006.T'+' command/*'
>>> os.system(string)
grep: command/CVS: Is a directory
grep: command/obsolete: Is a directory
command/yosemite-2015.K:#p system/NoMoreHotCorner_20151006.T

但是这个函数不能将它的输出返回到屏幕。所以我决定改用 subprocess.check_output 。但它引发了 CalledProcessError。

>>> p = check_output(string,shell=True)
grep: command/CVS: Is a directory
grep: command/obsolete: Is a directory
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/subprocess.py", line 573, in check_output
raise CalledProcessError(retcode, cmd, output=output)
subprocess.CalledProcessError: Command 'grep NoMoreHotCorner_20151006.T command/*' returned non-zero exit status 2

所以我在stack overflow上查找了类似的问题,这次异常处理。但它只打印前两行....

>>> try:
... p = check_output(string,shell=True)
... except CalledProcessError as e:
... print(e.returncode)
...
grep: command/CVS: Is a directory
grep: command/obsolete: Is a directory
2

所以我这次改用Popen。但是,它仍然有问题。输出前两行后,它会一直运行。

>>> p = Popen(string,shell=True,stdout=PIPE)
>>> grep: command/CVS: Is a directory
grep: command/obsolete: Is a directory

KeyboardInterrupt

我完全卡在这一点上了。

最佳答案

尝试将 p = Popen(string,shell=True,stdout=PIPE) 更改为 p = Popen(['grep', 'NoMoreHotCorner_20151006.T', 'command/* '],stdout=PIPE) 然后使用 p.communicate() 读取输出。

或者,使用 check_output(['grep', 'NoMoreHotCorner_20151006.T', 'command/*'])

关于python子进程和grep命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33073806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com