关于正则表达式模块的匹配和替换功能
#!/usr/bin/env python3
# Fix Python script(s) to reference the interpreter via /usr/bin/env python.
# Warning: this overwrites the file without making a backup.
import sys
import re #正则表达式
def main():
for filename in sys.argv[1:]:
try:
f = open(filename, 'r')
except IOError as msg:
print(filename, ': can\'t open :', msg)
continue
line = f.readline()
if not re.match('^#! */usr/local/bin/python', line): #匹配方法
print(filename, ': not a /usr/local/bin/python script')
f.close()
continue
rest = f.read() #这是读接下来的行,竟然没有用到缓冲区的大小的设置.为什么上一方法不这么使用呢?
f.close()
line = re.sub('/usr/local/bin/python',
'/usr/bin/env python ', line) #re还包含了字符串的替换功能
print(filename, ':', repr(line)) #打印字符串,不能打印的字符以转义字符显示. 这是一个内置函数
f = open(filename, "w") #将文件内容都写进去,且都写的都是同一个文件
f.write(line)
f.write(rest)
f.close()
if __name__ == '__main__':
main()
小节:
1、我们可以通过file.read()读取文件内容,或者通过urllib.urlopen抓取网页信息,然后read()到变量,但是如果文件很大比如有20G,或者网页是无限循环输出的,你就只能死机了,好的习惯是给read加上一个参数,指定要读取的最大行数。
2、如果要查看文件内容,则需要考虑文件编码的问题。 介绍了文件编码,主要有:默认的编码方式是有系统决定的,指定对编码方式才能正确显示文件内容.
阅读(1016) | 评论(0) | 转发(0) |