GVKun编程网logo

使用参数运行python脚本(python 带参数运行)

14

关于使用参数运行python脚本和python带参数运行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ProcessBuilder无法使用参数运行python脚本、python:我可以在

关于使用参数运行python脚本python 带参数运行的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ProcessBuilder无法使用参数运行python脚本、python:我可以在不实际安装python的情况下运行python脚本吗?、从C ++代码运行python脚本并在c ++中使用pythons输出、从PHP运行Python脚本等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

使用参数运行python脚本(python 带参数运行)

使用参数运行python脚本(python 带参数运行)

我想从C调用Python脚本,并传递脚本中所需的一些参数。

我要使用的脚本是mrsync或多播远程同步。我通过调用以下命令从命令行进行了工作:

python mrsync.py -m /tmp/targets.list -s /tmp/sourcedata -t /tmp/targetdata

-m是包含目标ip地址的列表。-s是包含要同步的文件的目录。-t是目标计算机上将放置文件的目录。

到目前为止,通过使用以下C程序,我设法运行了没有参数的Python脚本:

Py_Initialize();FILE* file = fopen("/tmp/myfile.py", "r");PyRun_SimpleFile(file, "/tmp/myfile.py");Py_Finalize();

这很好。但是,我找不到如何将这些参数传递给PyRun_SimpleFile(..)方法的方法。

答案1

小编典典

似乎您正在使用Python.h中的python开发API寻找答案。这是一个适合您的示例:

#My python script called mypy.pyimport sysif len(sys.argv) != 2:  sys.exit("Not enough args")ca_one = str(sys.argv[1])ca_two = str(sys.argv[2])print "My command line args are " + ca_one + " and " + ca_two

然后通过C代码传递这些args:

//My code file#include <stdio.h>#include <python2.7/Python.h>void main(){    FILE* file;    int argc;    char * argv[3];    argc = 3;    argv[0] = "mypy.py";    argv[1] = "-m";    argv[2] = "/tmp/targets.list";    Py_SetProgramName(argv[0]);    Py_Initialize();    PySys_SetArgv(argc, argv);    file = fopen("mypy.py","r");    PyRun_SimpleFile(file, "mypy.py");    Py_Finalize();    return;}

如果可以将参数传递给C函数,则此任务将变得更加容易:

void main(int argc, char *argv[]){    FILE* file;    Py_SetProgramName(argv[0]);    Py_Initialize();    PySys_SetArgv(argc, argv);    file = fopen("mypy.py","r");    PyRun_SimpleFile(file, "mypy.py");    Py_Finalize();    return;}

您可以直截了当。现在,为了节省时间,我的解决方案只使用了2个命令行参数,但是您可以对所有6个参数使用相同的概念…当然,还有更简洁的方法可以在python端捕获args,但是那只是基本的想法。

希望能帮助到你!

ProcessBuilder无法使用参数运行python脚本

ProcessBuilder无法使用参数运行python脚本

好的,所以我有一个通过ProcessBuilder运行的python脚本。一切正常。我遇到的问题是,每当我将参数传递到python脚本时,python脚本都会以响应unrecognizedargumets。但是,如果我采用确切的命令并将其复制并粘贴到命令提示符下,则它运行得很好。有什么帮助吗?这是我现在所拥有的一般想法:

ProcessBuilder builder = new ProcessBuilder("C:\Python33\" + "python.exe","-u", "C:\...\script.py", "--arg1 " + "argumentValue");p = builder.start();

答案1

小编典典

将两个单独的参数传递给,ProcessBuilder而不是串联--arg1argumentValue

ProcessBuilder builder = new ProcessBuilder("C:\\Python33\\python.exe",                                            "-u",                                            "C:\\...\\script.py,                                            "--arg1",                                            "argumentValue");

否则,要执行的程序将看到--arg1 argumentValue无法识别的单个参数。

python:我可以在不实际安装python的情况下运行python脚本吗?

python:我可以在不实际安装python的情况下运行python脚本吗?

我写了一些要在其他计算机上运行的.py文件。目标机器未安装python,因此我无法通过策略“安装”它。我所能做的就是复制文件,运行我的东西,然后将其删除。

我试图将开发python文件夹移至目标计算机,将cd移至python文件夹并运行python.exe /path/to/.py/file。它给我一个错误,指出未注册python.dll。如果我注册了DLL,这可能会使我跨过“违反政策”行。

无论如何,我是否可以在没有实际安装python的机器上完成运行python文件的操作(试图让py2exe现在工作,但这很痛苦)?

从C ++代码运行python脚本并在c ++中使用pythons输出

从C ++代码运行python脚本并在c ++中使用pythons输出

您必须将代码链接到libpython3.x.a / python3.x.lib(x-您使用的python版本)。链接哪个文件:*。a或* .lib取决于您的操作系统。这些文件可通过python发行版获得。

这是带有cmake的代码,对我有用:

cmake_minimum_required(VERSION 2.8.9)
project (embpy)
add_executable(embpy embpy.cpp)
target_include_directories(embpy PRIVATE /path-to-python/Python38/include/python3.8)
target_link_libraries(embpy /path-to-python/Python38/lib/libpython3.8.a)

embpy.cpp与您的相同

,

然后我自己弄清楚了,问题出在编译器参数不完整。

这就是我可以使用的:

g++ -fPIC $(python3.6-config --cflags) cpp.cpp $(python3.6-config --ldflags)

缺少的关键部分是要编译的文件之前的$(python3.6-config --cflags)和之后的$(python3.6-config --ldflags)。第一个为g ++提供编译选项,第二个为链接提供标志。

从python docs(第1.6部分)中找到了解决方案。

从PHP运行Python脚本

从PHP运行Python脚本

我正在尝试使用以下命令从PHP运行Python脚本:

exec('/usr/bin/python2.7 /srv/http/assets/py/switch.py arg1 arg2');

但是,PHP根本不会产生任何输出。错误报告设置为E_ALL,并且display_errors打开。

这是我尝试过的:

  • 我使用python2,/usr/bin/python2python2.7不是/usr/bin/python2.7
  • 我还使用了相对路径而不是绝对路径,该绝对路径也没有任何改变。
  • 我试着使用的命令exec,shell_exec,system

但是,如果我跑步

if (exec('echo TEST') == 'TEST')
{
    echo 'exec works!';
}

它shutdown now什么都没做,但工作得很好。

PHP有权访问和执行文件。

编辑:感谢亚历杭德罗,我能够解决此问题。如果你遇到相同的问题,请不要忘记你的网络服务器可能/希望不是以root用户身份运行。尝试以你的Web服务器用户或具有类似权限的用户身份登录,然后尝试自己运行命令。

今天的关于使用参数运行python脚本python 带参数运行的分享已经结束,谢谢您的关注,如果想了解更多关于ProcessBuilder无法使用参数运行python脚本、python:我可以在不实际安装python的情况下运行python脚本吗?、从C ++代码运行python脚本并在c ++中使用pythons输出、从PHP运行Python脚本的相关知识,请在本站进行查询。

本文标签: