[英]Running a C executable from Python with command line arguments
我有一個 C 文件說, myfile.c
。
現在編譯我正在做: gcc myfile.c -o myfile
所以現在要運行這個我需要做: ./myfile inputFileName > outputFileName
其中inputFileName
和outputFileName
是 2 個命令行輸入。
現在我試圖在 python 程序中執行它,我正在嘗試下面的方法,但它不能正常工作可能是由於>
import subprocess
import sys
inputFileName = sys.argv[1];
outputFileName = sys.argv[2];
subprocess.run(['/home/dev/Desktop/myfile', inputFileName, outputFileName])
其中/home/dev/Desktop
是我的目錄的名稱,而myfile
是可執行文件的名稱。
我該怎么辦?
您在命令中使用的>
是特定於 shell 的輸出重定向語法。 如果你想通過 Python 做同樣的事情,你必須調用 shell 來為你做這件事,使用shell=True
和單個命令行(不是列表)。
像這樣:
subprocess.run(f'/home/dev/Desktop/myfile "{inputFileName}" > "{outputFileName}"', shell=True)
如果您只想通過 Python 執行此操作而不調用 shell(這是shell=True
所做的),請查看其他問答: How to redirect output with subprocess in Python?
您可以在 Python 中打開輸出文件,並將文件對象傳遞給subprocess.run()
。
import subprocess
import sys
inputFileName = sys.argv[1];
outputFileName = sys.argv[2];
with open(outputFileName, "w") as out:
subprocess.run(['/home/dev/Desktop/myfile', inputFileName], stdout=out)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.