我有一些像这样的代码:运行grep的 - 不工作
f = open("words.txt", "w")
subprocess.call(["grep", p, "/usr/share/dict/words"], stdout=f)
f.close()
我希望到grep MacOS的字典一定的模式,并将结果写入words.txt
。例如,如果我想要执行类似grep '\<a.\>' /usr/share/dict/words
的操作,则可以使用p = "'\<a.\>'"
运行上述代码。但是,子流程调用似乎无法正常工作,并且words.txt
仍为空。任何想法,为什么这是?另外,有没有办法将正则表达式应用于/usr/share/dict/words
而不调用grep子进程?
编辑: 当我在终端运行grep '\<a.\>' /usr/share/dict/words
,我得到的话,如:AA 广告 AE 啊 人工智能 AK 人 上午 的 AR 作为 在 AW 斧头 AY为导致终端(或者如果我在那里重定向他们的文件)。这是我在运行子进程调用后期望words.txt
的结果。
请至少提供一个您期望的匹配。 到目前为止,我认为你可以安全地从你的模式中移除字符和''''''''。你不必转义字符,因为你现在没有使用shell。 您当前的调用应该使用附加参数'shell = True' – woockashek
@woockashek添加的示例匹配 –