Python中sys.argv[ ]与Cpp中int main(int argc char *argv[ ])的用法

18 篇文章 22 订阅

Python中sys.argv[ ]与Cpp中int main(int argc char *argv[ ])的用法

前言

最近在学习ROS,在服务通信中老是遇到这两种用法,在以前系统学习Python和Cpp的时候,遗忘了这一知识点,现在进行补票。


一、Python中sys.argv[]的用法

1、用法
🚀 sys.argv 的作用是获取运行python文件的时候命令行参数,且以list形式存储参数,其中第一个参数sys.argv[0]为python文件的存放路径(是相对路径),后续参数如sys.argv[1]为打包的命令行参数。

2、示例
举一个简单的示例,大家应该就能明白,这个脚本文件的文件名为demo1.py

# 一个简单的示例
import sys

# 程序主入口
if __name__ == "__main__":
    print("----程序启动----")
    print("当前程序的路径为:", sys.argv[0])
    print("所有的参数类型为:",list(map(type,sys.argv)))
    for i in range(1,len(sys.argv)):
        print("其余的打包命令行参数为:", sys.argv[i])
    print("----程序结束----")

在命令行中启动该脚本文件

python ./demo1.py 10 20 30

运行的结果如下

解释如下:

即我们将文件的相对路径.\demo1.py打包进入了sys.argv[0],然后将剩余的参数10,20,30分别打包进了sys.argv[1],sys.argv[2],sys.argv[3]


二、Cpp中int main(int argc char *argv[])的用法

1、用法
🚀 argc用来统计你运行程序时送给main函数的命令行参数的个数,而argv同样是存放获取运行Cpp文件的时候命令行参数,其中第一个参数argv[0]为Cpp文件的存放路径(是相对路径),后续参数如argv[1]为打包的命令行参数。

2、示例
举一个简单的示例,这个脚本文件的名字为demo2.cpp

//一个简单的示例
#include <stdio.h>


int main(int argc, char* argv[])
{
	printf("---程序开始---\n");
	printf("当前打包的个数为:%d\n", argc);
	int i;
	for (i = 0; i < argc; i++)
	{
		printf("第%d个参数为:%s\n", i, argv[i]);
	}
	printf("---程序结束---\n");
}

运行Cpp脚本文件和Python脚本文件还不太一样,Cpp需要编译,不可以直接运行,我们使用以下语句可以编译Cpp脚本文件.cpp并且生成可执行文件.exe

首先编译cpp文件,生成可执行文件exe,语法是

gcc -o 输出可执行文件名.exe 脚本文件.cpp(路径)
gcc -o demo2.exe demo1.cpp

再使用

ls

查看是否编译成功

然后使用可执行文件.exe进行执行,

.\demo2.exe 10 20 30 hello world!

效果如下:


Reference

https://blog.csdn.net/lyb3b3b/article/details/81221396?utm_medium=distribute.pc_relevant.none-task-blog-2defaultbaidujs_baidulandingword~default-0-81221396-blog-74909089.pc_relevant_3mothn_strategy_recovery&spm=1001.2101.3001.4242.1&utm_relevant_index=3

https://blog.csdn.net/weixin_42996227/article/details/126779072?ops_request_misc=&request_id=&biz_id=102&utm_term=int%20main(argc,%20char%20*argv%5B%5D)%E7%9A%84%E7%94%A8&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-126779072.142v73wechat,201v4add_ask,239v2insert_chatgpt&spm=1018.2226.3001.4187

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 可以使用 C++ 调用 Python 文件并传递参数。方法之一是使用 Python/C API,它提供了一组 C 函数,可以在 C/C++ 程序调用 Python 代码。 首先,需要在 C++ 包含 Python 头文件: ```#include <Python.h>``` 然后,使用 `Py_Initialize()` 初始化 Python 解释器,使用 `PyRun_SimpleString()` 执行 Python 代码,使用 `Py_Finalize()` 结束 Python 解释器的使用。 如果要调用特定的 Python 文件并传递参数,可以使用 `PyRun_SimpleFile()` 或 `PyRun_SimpleFileEx()` 函数。这些函数接受文件句柄或文件名作为参数。 还可以使用`PyImport_Import` 和 `PyObject_CallObject` 来调用特定的函数。 具体的示例代码可以看官方的文档或其他相关的教程,并做相应的修改。 ### 回答2: 在C++调用Python文件并传递参数可以通过使用Python的相关库实现。以下是一种常用的方法: 1. 首先,你需要在C++程序包含相关的头文件,例如`Python.h`。 2. 然后,你需要初始化Python解释器。可以使用`Py_Initialize()`函数来实现。 3. 接下来,你需要将C++的参数传递给Python。可以使用`PyRun_SimpleString()`函数来执行Python代码,并将参数传递给它。例如,你可以使用类似于`PyRun_SimpleString("param = 'your_parameter_value'")`的代码来在Python创建一个名为`param`的变量,并将参数值赋给它。 4. 在Python代码,你可以使用`sys.argv`来获取C++传递的参数。例如,你可以使用类似于`param = sys.argv[1]`的代码来获取传递的参数,并将其赋值给一个变量。 5. 最后,你可以使用`Py_Finalize()`函数来结束Python解释器的会话。 这是一个基本的示例代码,演示了如何在C++调用Python文件并传递参数: ```cpp #include <Python.h> int main(int argc, char *argv[]) { // 初始化Python解释器 Py_Initialize(); // 传递参数给Python PyRun_SimpleString("param = 'your_parameter_value'"); // 调用Python文件 FILE* file = fopen("your_python_file.py", "r"); PyRun_SimpleFile(file, "your_python_file.py"); // 结束Python解释器 Py_Finalize(); return 0; } ``` 请确保你的C++程序和Python文件在同一个目录,并将上述代码的文件名和参数值替换为你自己的文件名和参数值。 ### 回答3: 在CPP调用Python文件并传递参数可以使用Python的扩展模块来实现。具体步骤如下: 1. 首先,需要使用#inculde指令引入Python的相关头文件: ```cpp #include <Python.h> ``` 2. 然后,需要初始化Python解释器: ```cpp Py_Initialize(); ``` 3. 接着,可以使用PyRun_SimpleString函数来运行Python代码,从而调用Python文件: ```cpp PyRun_SimpleString("exec(open('your_python_file.py').read())"); ``` 其,"your_python_file.py"是你要调用的Python文件的文件名。 4. 接下来,可以使用PyObject_CallFunction函数来调用Python文件的函数,并传递参数: ```cpp PyObject* pModule = PyImport_ImportModule("your_python_file"); PyObject* pFunc = PyObject_GetAttrString(pModule, "your_python_function"); PyObject* pArgs = PyTuple_Pack(1, Py_BuildValue("s", "your_parameter")); PyObject* pResult = PyObject_CallObject(pFunc, pArgs); ``` 其,"your_python_function"是你要调用的Python函数的函数名,"your_parameter"是要传递的参数。 5. 最后,可以使用Py_Finalize函数来结束Python解释器的运行: ```cpp Py_Finalize(); ``` 需要注意的是,CPP调用Python的过程,需要确保Python的解释器和所使用的Python文件在同一个环境下,并且需要安装并配置好对应的Python环境和相关模块。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值