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中。