[英]Calling C's hello world from Python
我的C腳本:
/* Hello World program */
#include <stdio.h>
int main() {
printf("Hello, World! \n");
return 0;
}
我想看Hello, World!
以最簡單的方式直接在我的Python IDE(Rodeo IDE)中打印。
到目前為止,我已經提出了以下方法,但是它似乎不起作用(而且麻煩,因為這需要我去終端機):
首先,在終端中執行gcc helloworld.c
以生成可執行文件a.out*
,然后執行以下操作:
from subprocess import call
call(["./a.out"])
但是,而不是打印Hello, World!
到Python控制台,我得到0
(表示成功)。 我該如何直接將C輸出打印到Python控制台,以及如何進一步簡化它(例如,通過避免終端繞行)? 我知道我需要首先制作可執行文件(這就是為什么要使用Terminal的原因),但是在Python IDE中也許有一種更簡潔的方法來執行它?
對於想知道b代表什么的用戶... @happydave的解決方案在這里經過了測試,並感謝@Mark Tolonen解釋了b
Python 3.5.2 |Anaconda 4.2.0 (x86_64)| (default, Jul 2 2016, 17:52:12)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import subprocess
>>> print(subprocess.check_output("./a.out"))
b'Hello, World! \n'
b
來自哪里很奇怪...
>>> import subprocess
>>> subprocess.check_output("./a.out")
'Hello World!\n'
關於第二個問題,您也可以使用子過程調用gcc。 在這種情況下,調用可能是正確的選擇,因為您可能想在運行a.out之前檢查是否失敗。
這是完整的腳本:
import subprocess
status = subprocess.call(["gcc","hello.c"])
if status == 0:
print(subprocess.check_output("./a.out").decode('utf-8'))
else:
print("Failed to compile")
你好ç:
#include "stdio.h"
int main() {
printf("Hello world!");
}
輸出:世界您好!
如果編譯C腳本(例如,到a.out
):
#include <stdio.h>
int main(void) {
printf("Hello, World! \n");
return 0;
}
您可以使用CTypes輕松地調用它:
# hello.py
import ctypes
beach = "./a.out"
seashell = ctypes.cdll.LoadLibrary(beach)
seashell.main()
調用以下Python腳本將在C腳本中調用main()
:
$ python hello.py
Hello, World!
您可以使用例如communication進行子處理和捕獲輸出,但是無需生成shell即可完成所需的工作。
您可以使用以下代碼將文本直接打印到Python模塊:
print("Hello, world!")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.