我有一些像這樣的代碼:運行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添加的示例匹配 –