Python Cookbook 2nd Edition,Recipe 2.3. Searching and Replacing Text in a File
import os, sys
nargs = len(sys.argv)
if not 3 <= nargs <= 5:
print "usage: %s search_text replace_text [infile [outfile]]" % \
os.path.basename(sys.argv[0])
else:
stext = sys.argv[1]
rtext = sys.argv[2]
input_file = sys.stdin
output_file = sys.stdout
if nargs > 3:
input_file = open(sys.argv[3])
if nargs > 4:
output_file = open(sys.argv[4], 'w')
for s in input_file:
output_file.write(s.replace(stext, rtext))
output_file.close( ) #书中代码跑不了,没有output
input_file.close( ) #有input,但是input没有attribute“close”
测试代码
input.txt
abcdefg
abcdefg
abcdefg
abcdefg
用"AB"代替"ab"
>python p.py 'ab' 'AB' "input.txt" "output.txt"
output.txt
abcdefg
abcdefg
abcdefg
abcdefg
失败了。
>python p.py "ab" "AB" "input.txt" "output.txt"
再来看
output.txt
ABcdefg
ABcdefg
ABcdefg
ABcdefg
在output_file.write(s.replace(stext, rtext)) 前插入
>print s.find(stext) #stext='ab'
返回-1,没找到。
为什么呢?
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29000138/viewspace-1384301/
,如需转载,请注明出处,否则将追究法律责任。