执行sys.argv[1],报错IndexError: list index out of range问题

it2023-06-26  67

执行sys.argv[1],报错IndexError: list index out of range问题

sys.argv[]用来在程序外部获取参数,代码拿过来直接运行是不可以的。正确的方式是通过控制台上输入代码,并向其传递参数。


如下例子:

p = Process() fr = open(sys.argv[1], "r", encoding="utf-8") fw = open(sys.argv[2], "w", encoding="utf-8") f_del = open(sys.argv[3], "w", encoding="utf-8") line_no = 0 for line in fr: line_no += 1 if line_no % 10000 == 0: print("\r\tProcessed " + str(line_no) + " lines", end='') line = line.strip().split('\t') src = line[0] tgt = line[1] newsrc, newtgt, flag, name = p.dealer(src, tgt) if flag: fw.write(newsrc + "\t" + newtgt + "\n") continue else: f_del.write(newsrc + "\t" + newtgt + "\n") fr.close() fw.close() f_del.close()

p是Process类创建的一个对象,读取fr文件对象中的内容并做一些数据处理,将处理结果分别写入fw和f_del所对应文件中。sys.argv[1] sys.argv[2] sys.argv[3]则是程序运行时需要给定的参数

处理过程的代码忽略

正确的运行方式:打开控制台,进入.py文件所在的文件夹,输入python filename.py a.txt b.txt c.txt

我是在服务器上运行的代码,如下:

[hegl@iZ8vbd74m2h85i33ez6r73Z ~]$ python3 del_blanks_server.py testset.txt save.txt del.txt

解释:del_blanks_server.py即是上述代码块,testset.txt save.txt del.txt即是脚本中预留的参数。 这段脚本的意思是:从testset.txt中读数据,将不同的处理结果分别放入save.txt和del.txt中。

最新回复(0)