#python #c
Вопрос:
Я пытаюсь запустить простой файл py в dev c .
/// **main file**
string script_name = "example.py"
char* script_name2 = new char[script_name.length() 1];
strcpy(script_name2, script_name.c_str());
FILE* file_pointer;
Py_Initialize();
file_pointer = fopen(script_name2,"r");
if (file_pointer == NULL)
{
PyErr_Print();
cout << "Cannot read file -> " << script_name2 << " ... exiting" << "n";
exit(0);
}
cout << file_pointer;
PyRun_SimpleFile(file_pointer, script_name2);
example.py
print("My Name is TUTANKHAMEN")
Указатель на файл не равен нулю и выводит адрес.
example.py находится в той же папке, содержащей main.cpp
Приведенная ниже инструкция работает нормально и выводит вывод на консоль.
Py_Initialize();
PyRun_SimpleString("import examplen");
Py_Finalize();
Комментарии:
1. Каков результат и что происходит с фиаско script_name2? какова ваша операционная система? docs.python.org/3/c-api/veryhigh.html#c.PyRun_SimpleFileExFlags (серая записка).
2.Если вы работаете в Windows, вам нужно открыть файл в двоичном режиме. (См. Примечание
PyRun_SimpleFileExFlags
здесь.)3. пожалуйста, игнорируйте имя скрипта2. ОС-это windows. Я подозреваю, что это как-то связано с дополнительными зависимостями.
4. На заметку, которую вы можете передать
script_name.c_str()
непосредственноfopen
, вам не нужно ее копировать.5. Открытие в двоичном режиме : «fopen(script_name2,»rb»); » не работает.
Ответ №1:
Сценарий отлично работает в Visual Studio 2019.
Но в Dev C :
file_pointer = _Py_fopen(имя скрипта2, «r»);
Это делает свое дело.