2024-05-19 18:18:59 发布
网友
我不确定我的头衔是否正确。 我所做的是编写一个python脚本来自动化我的一些代码编写。 所以我正在分析一个.h文件。 但我想在开始之前展开所有宏。 所以我想给shell打个电话:
gcc -E myHeader.h
它应该将myHeader.h的后预处理版本输出到stdout。 现在我想把所有的输出直接读入一个字符串以便进一步处理。 我知道我可以用popen做这个,但是我从来没有用过管道对象。
我该怎么做?
os.popen函数只返回一个类似文件的对象。你可以这样使用它:
os.popen
import os process = os.popen('gcc -E myHeader.h') preprocessed = process.read() process.close()
正如其他人所说,您应该使用subprocess.Popen。它被设计成safer version的os.popen。Python文档有一个section describing how to switch over。
subprocess.Popen
import subprocess p = subprocess.popen('gcc -E myHeader.h'.split(), stdout=subprocess.PIPE) preprocessed, _ = p.communicate()
字符串preprocessed现在有了您需要的预处理源代码——并且您使用了“正确”(现代)的方法来对子进程进行shell操作,而不是以前不太喜欢的方法os.popen。
preprocessed
你应该使用subprocess.Popen()上面有很多例子
subprocess.Popen()
How to get output from subprocess.Popen()
os.popen
函数只返回一个类似文件的对象。你可以这样使用它:正如其他人所说,您应该使用
subprocess.Popen
。它被设计成safer version的os.popen
。Python文档有一个section describing how to switch over。字符串
preprocessed
现在有了您需要的预处理源代码——并且您使用了“正确”(现代)的方法来对子进程进行shell操作,而不是以前不太喜欢的方法os.popen
。你应该使用
subprocess.Popen()
上面有很多例子How to get output from subprocess.Popen()
相关问题 更多 >
编程相关推荐