关于argv参数问题

部署运行你感兴趣的模型镜像

关于argv参数问题

最近在学习python数据分析 基础这本书,打算将遇到的问题跟大家分享一下,如果有不对的地方也欢迎大家指出来互相交流。

这两天学习到了第二章读写csv文件这里遇到了如下的问题
首先代码如下图:

         import sys    
         input_file = sys.argv[1]  
         output_file = sys.argv[2] 
         with open(input_file, 'r', newline='') as filereader:  
         with open(output_file,'w', newline='') as filewriter:header =        filereader.readline() 
         header = header.strip()         
         header_list = header.split(',') 
         print(header_list)
         filewriter.write(','.join(map(str,header_list))+'\n')
         
         for row in filereader:          
         row = row.strip()           
         row_list = row.split(',')   
         print(row_list)
         filewriter.write(','.join(map(str,row_list))+'\n') 

刚开始我在Spyder上直接运行,得到了如下结果:

input_file = sys.argv[1]
IndexError: list index out of range

后来查阅资料了解到sys.argv[ ]其实就是一个列表,里边的项为用户输入的参数,这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数。

所以我又在Windows终端运行,根据书上的提示,运行的代码如下:
python 1csv_simple_parsing_and_write.py supplier_data.csv\output_files\1output.csv

但是运行结果确出错了
Traceback (most recent call last):
File “1csv_simple_parsing_and_write.py”, line 11, in
output_file = sys.argv[2]
IndexError: list index out of range

后来解决方法如下:
由于sys.argv用于表示命令行中传入的参数列表。在Windows终端运行的代码中,sys.argv[0]用作脚本名称,表示的是参数1csv_simple_parsing_and_write.py, sys.argv[1]表示的是参数supplier_data.csv\output_files\1output.csv 所以没有第三个参数,原因是“\”将supplier_data.csv\output_files\1output.csv看成了一个整体,所以应该将Windows终端的运行代码改为:python 1csv_simple_parsing_and_write.py supplier_data.csv output_files\1output.csv 去掉upplier_data.csv和output_files中间的反斜杠改为空格 sys.argv[3]的参数就是output_files\1output.csv 此外还需要在你的路径下创建一个output_files文件夹。

上述是相对路径的运行方法,还有一个绝对路径运行方法,供大家参考。
python 1csv_simple_parsing_and_write.py “CSV输入文件路径和文件名” “CSV输出文件路径和文件名”

您可能感兴趣的与本文相关的镜像

Python3.9

Python3.9

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

### 在 VSCode 中设置 argv 参数的方法 在 VSCode 中配置 `argv` 参数,可以通过修改 `.vscode/launch.json` 文件来实现。以下是具体方法: #### 1. 配置 `launch.json` 在 VSCode 的工作区根目录下,找到或创建 `.vscode/launch.json` 文件。如果该文件不存在,可以通过以下方式生成: - 打开调试视图(左侧活动栏中的调试图标)。 - 点击“创建一个 launch.json 文件”链接,并选择调试环境(如 C++ (GDB/LLDB))。 在 `launch.json` 文件中,添加或修改 `"args"` 字段以指定命令行参数。例如: ```json { "version": "2.0.0", "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/build/main", // 替换为可执行文件路径 "args": ["arg1", "arg2", "arg3"], // 设置 argv 参数 "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true }, { "description": "将反汇编风格设置为 Intel", "text": "-gdb-set disassembly-flavor intel", "ignoreFailures": true } ] } ] } ``` 上述配置中,`"args"` 字段的值会被传递给程序作为命令行参数[^4]。 #### 2. 使用终端输入参数 如果希望通过终端手动输入参数,可以按照以下步骤操作: - 在项目根目录下打开终端(`Ctrl+`` 或者通过菜单“视图 -> 终端”)。 - 编译项目并生成可执行文件(例如使用 `g++ main.cpp -o main`)。 - 在终端中运行可执行文件,并手动传入参数。例如: ```bash ./main arg1 arg2 arg3 ``` 这种方式适用于需要动态输入参数的场景[^1]。 #### 3. 示例代码 以下是一个简单的 C++ 程序,用于演示如何接收和处理 `argv` 参数: ```cpp #include <iostream> int main(int argc, char const *argv[]) { if (argc > 1) { for (int i = 1; i < argc; ++i) { std::cout << "Argument " << i << ": " << argv[i] << std::endl; } } else { std::cout << "No arguments provided." << std::endl; } return 0; } ``` 当通过 `launch.json` 配置了 `"args": ["arg1", "arg2"]` 时,程序输出如下: ``` Argument 1: arg1 Argument 2: arg2 ``` #### 注意事项 - 确保 `"program"` 字段指向正确的可执行文件路径。 - 如果使用外部终端(`externalConsole: true`),可能需要调整终端的默认设置。 - 参数的数量会影响 `argc` 的值,因此可以根据 `argc` 判断是否提供了足够的参数。 --- ###
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值