gpt4 book ai didi

python - 使用 python 的 subprocess.Popen 将字符串传递给 gcc

转载 作者:太空狗 更新时间:2023-10-29 11:15:09 24 4
gpt4 key购买 nike

我有一个 C++ 风格的文本文件,我正试图通过管道将其传输到 gcc 以删除注释。最初,我尝试了正则表达式方法,但在处理嵌套注释、字符串文字和 EOL 问题等问题时遇到了问题。

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

strip_comments(test_file.c)

def strip_comments(text):
p = Popen(['gcc', '-w', '-E', text], stdin=PIPE, stdout=PIPE, stderr=STDOUT)
p.stdin.write(text)
p.stdin.close()
print p.stdout.read()

但我不想传递文件,而是想通过管道传输内容,因为我尝试预处理的文件实际上没有 .c 扩展名

有人成功过这样的事情吗?

最佳答案

这与 subprocess.PIPE 一起工作(不推荐使用 os.popen()),您还需要将额外的 - 参数传递给 gcc 以使其进行处理标准输入:

import os
from subprocess import Popen, PIPE
def strip_comments(text):
p = Popen(['gcc', '-fpreprocessed', '-dD', '-E', '-x', 'c++', '-'],
stdin=PIPE, stdout=PIPE, stderr=PIPE)
p.stdin.write(text)
p.stdin.close()
return_code = p.wait()
print p.stdout.read()

关于python - 使用 python 的 subprocess.Popen 将字符串传递给 gcc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552794/

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