关于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输出文件路径和文件名”

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值