簡體   English   中英

使用命令行參數從 Python 運行 C 可執行文件

[英]Running a C executable from Python with command line arguments

我有一個 C 文件說, myfile.c

現在編譯我正在做: gcc myfile.c -o myfile

所以現在要運行這個我需要做: ./myfile inputFileName > outputFileName

其中inputFileNameoutputFileName是 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM