python中用argv函数修改文件里的内容

 代码如下:
import sys,os
f = open(sys.argv[1],'a+')#f代表的是这个文件的对象,也叫句柄 注意sys.argv[1]这里一定不要加上引号,否则被认定为字符串
fw = open('a1.txt.new','w')#fw代表的是这个文件的对象,也叫句柄
f.write(sys.argv[2]+' ') #注意sys.argv[2]这里一定不要加上引号,否则被认定为字符串
f.write(sys.argv[2]+' ') #注意sys.argv[2]这里一定不要加上引号,否则被认定为字符串
f.seek(0) # 把文件指针移动到最前面 一定要加上这句话哦 因为如果打开一个文件 最开始的时候指针是指到末尾的
# line = f.read() #这句和for line in f是一个意思
for line in f:# 读出来了一次 然后又作为迭代参数 循环文件。 前面一次赋值没有意义
new_res = line.replace(sys.argv[2],sys.argv[3]) #B是被修改的字符串,DD是修改后的字符串 #注意sys.argv[2]和sys.argv[3]这里一定不要加上引号,否则被认定为字符串
fw.write(new_res)
f.close()
fw.close()
os.remove(sys.argv[1]) #注意sys.argv[1]这里一定不要加上引号,否则被认定为字符串
os.rename('a1.txt.new',sys.argv[1])#注意sys.argv[1]这里一定不要加上引号,否则被认定为字符串
 
 
 
#分析 在命令行执行以下 python 222.py a.txt BB DD
# sys.argv[0] #指的是2222.py
# sys.argv[1] #指的是a.txt
# sys.argv[2] #指的是 BB
# sys.argv[3] #指的是 DD




附不用argv的代码做一下对比:
import os
f = open(argv[1], 'r')
f = open('a1.txt','a+')#f代表的是这个文件的对象,也叫句柄
fw = open('a1.txt.new','w')#fw代表的是这个文件的对象,也叫句柄
f.write('BBBBBBBBB'+' ')
f.write('AAAAABBBBB'+' ')
f.seek(0) # 把文件指针移动到最前面 一定要加上这句话哦 因为如果打开一个文件默认指针是指到末尾的
# line = f.read() #这句和for line in f是一个意思
for line in f:# 读出来了一次 然后又作为迭代参数 循环文件。 前面一次赋值没有意义
new_res = line.replace('B','DD')#B是被修改的字符串,DD是修改后的字符串
fw.write(new_res)
f.close()
fw.close()
os.remove('a1.txt')
os.rename('a1.txt.new','a1.txt')
 
原文地址:https://www.cnblogs.com/anan99/p/6912243.html