关于python读取文件的问题

lihanloseking 2018-06-02 08:48:41
请教各位大神,下面这段代码编译过程中提示了2个错误:
1.第三行提示:IndexError: list index out of rang
2.第六行提示:TypeError: coercing to Unicode: need string or buffer, list found
我用的环境是python2.7,请各位大神帮忙看看代码哪里有问题,感激不尽

import sys

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

with open(input_file , 'r' , newline=' ') as filereader: #TypeError: coercing to Unicode: need string or buffer, list found
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')


...全文
1405 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
anticola 2019-09-13
  • 打赏
  • 举报
回复
第一种解决方法:
这里只是定义了一个工具,即读入input_file和写入output_file的操作函数,需要额外给参数。sys.arr[1]就是你需要传入的第一个参数,即input_file,arg[2]就是第二个参数。保存好这个py文件后,
在命令行输入:python read_write2csv.py supplier_data.csv outfile.csv
read_write2csv.py:‘本py文件的名字’.py
supplier_data.csv: 实际输入的input的名字.csv
outfile.csv: 需要写入的csv名字.csv

第二种解决方法:
直接给定输入输出的csv,但这种就只针对特定的csv了不具备通用性。可以改成如下:
input_file = supplier_data.csv
output_file = outfile.csv
然后直接运行就OK了
Auggie321 2018-06-12
  • 打赏
  • 举报
回复


配图方便参考
Auggie321 2018-06-12
  • 打赏
  • 举报
回复
1.楼主脚本内似乎没有语法错误,执行的语句应该是有问题的,你的问题,我也遇到过,思路见二。
2. 完整的执行命令如下,请参考;
python 1csv_simple_parsing_and_write.py "/Users/auggie/test/found/foundations-for-analytics-with-python/csv/supplier_data.csv" "/Users/auggie/test/found/foundations-for-analytics-with-python/csv/output_files/1output.csv"

我在Mac上的执行语句,
前面路径sys.argv[1] ##"/Users/auggie/test/found/foundations-for-analytics-with-python/csv/supplier_data.csv"
后面路径sys.argv[2] ##"/Users/auggie/test/found/foundations-for-analytics-with-python/csv/output_files/1output.csv"

在CSV的目录下,将supplier_data.csv文件格式输出到output_files的目录下并重名为1output.csv
morningbzy 2018-06-04
  • 打赏
  • 举报
回复
第3行的错误是因为执行的命令后面参数不够,应该是类似于: $ python readfile.py input_filename.txt output_filename.txt 第6行的错误基本上是由第3行的错误导致的。
TOFEMALE 2018-06-03
  • 打赏
  • 举报
回复
请用python3
手掌上的阳光 2018-06-03
  • 打赏
  • 举报
回复
列表索引超出范围
欢乐的小猪 2018-06-03
  • 打赏
  • 举报
回复
第三行提示:列表索引超出范围 第六行提示:需要string或buffer类型,但发现是list
oyljerry 2018-06-02
  • 打赏
  • 举报
回复
先看看sys.argv是什么数据就知道为什么错了

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧