Pythonファイルは中国語をサポートしています
# -*- コーディング: UTF-8 -*-
シェルコマンドを実行する
サブプロセスインポートPopen、PIPEから
def run_cmd(cmd):
#Popen 呼び出しwrapper.return (コード、標準出力、標準エラー出力)
子 = Popen(cmd、標準入力 = PIPE、標準出力 = PIPE、標準エラー出力 = PIPE、シェル = True)
エラー = child.communicate()
ret = child.wait()
戻る (戻る、出る、エラー)
現在のPythonスクリプトファイルのパスを取得します
OSをインポート
os.path.split(os.path.realpath(__file__))[0]
jsonモジュールのインポートの問題
試してください:
jsonをインポート
例外:
simplejson を json としてインポートします
jsonツールを使用してjsonをフォーマットします
#python 2.7 以下
echo \'{\"hello\":1}\' | python -m simplejson.tool
#Python 2.7 以降
echo \'{\"hello\":1}\' | python -m json.tool
一般的な通話手順
Py_Initialize() //Python 環境を初期化します
PyImport_ImportModule("test") // Python モジュールをロードします
;
PyObject_GetAttrString(g_pModule,"test1"); // 対応する Python 関数の PyObject を取得します
PyObject_CallFunction(test1,"i,s",2,e) //Python で対応する関数を呼び出します
;
Py_Finalize() //終了
C言語のサンプルコード
#include
int main(){
PyObject * g_pModule = NULL;
Py_Initialize(); //Python を使用する前に、この関数を初期化する必要があります
if (!Py_IsInitialized())
{
printf("初期化エラー\n");
return -1;
}
PyRun_SimpleString("import sys");
PyRun_SimpleString("sys.path.append('./')");
g_pModule =PyImport_ImportModule("mytest");//これは呼び出されるファイル名です、ここに現在のディレクトリにあるtest.pyがあります
if (!g_pModule) {
printf("Python ファイルを開けません!\n");
return -2;
}
PyObject * test1 = PyObject_GetAttrString(g_pModule,"test1"); // 呼び出される関数名は次のとおりです
PyObject *objResult = PyObject_CallFunction(test1,"i,s",2,e);//関数を呼び出す
if (!objResult){
printf("関数呼び出し失敗\n");
}
PyObject * test2= PyObject_GetAttrString(g_pModule,"test2");//これは呼び出される関数名です
objResult = PyObject_CallFunction(test2,"i",2);//関数を呼び出す
char * x = PyString_AsString(objResult);
printf("%s\n",x);
Py_Finalize();//Py_Initialize に対応する Py_Finalize を呼び出します。
}
Python プログラム mytest.py
def test1(s,str):
印刷 s+str
0を返す
デフォルトテスト2:
返します
Cプログラムのコンパイル方法
# コンパイル時に Python が /opt/python にインストールされていると仮定すると、このようなコマンドを使用してプログラムをコンパイルできます
$gcc -I/opt/python/include -L/opt/python/lib/ -lpython2.7 test.c
注: Python をコンパイルするときは、ダイナミック リンク ライブラリを用意し、 --enable-shared を追加する必要があります
./configure --prefix=/opt/python --enable-shared