🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[fileinput][1]模块可以对一个或多个文件中的内容进行迭代、遍历等操作。该模块的input()函数有点类似文件readlines()方法,区别在于前者是一个迭代对象,需要用for循环迭代,后者是一次性读取所有行。用fileinput对文件进行循环遍历,格式化输出,查找、**替换**等操作,非常方便。 ### 格式 ~~~ fileinput.input(files=None, inplace=False, backup='', bufsize=0, mode='r', openhook=None) files: #文件的路径列表,默认是stdin方式,多文件['1.txt','2.txt',...] inplace: #是否将标准输出的结果写回文件,默认不取代 backup: #备份文件的扩展名,只指定扩展名,如.bak。如果该文件的备份文件已存在,则会自动覆盖。 bufsize: #缓冲区大小,默认为0,如果文件很大,可以修改此参数,一般默认即可 mode: #读写模式,默认为只读 openhook: #该钩子用于控制打开的所有文件,比如说编码方式等; ~~~ ### 示例 #### 读取文件 ~~~ >>> import fileinput >>> for line in fileinput.input('data.txt'): print line, #输出结果 Python Java C/C++ Shell #test.py import fileinput for line in fileinput.input(): print fileinput.filename(),'|','Line Number:',fileinput.lineno(),'|: ',line c:>python test.py data.txt data.txt | Line Number: 1 |: Python data.txt | Line Number: 2 |: Java data.txt | Line Number: 3 |: C/C++ data.txt | Line Number: 4 |: Shell ~~~ ### 内容替换 ~~~ #data.txt Python Java C/C++ Shell #FileName: test.py import fileinput for line in fileinput.input('data.txt',backup='.bak',inplace=1): print line.rstrip().replace('Python','Perl') #或者print line.replace('Python','Perl'), #最后结果: #data.txt Python Java C/C++ Shell #并生成: #data.txt.bak文件 ~~~ [1]:https://docs.python.org/3.5/library/fileinput.html#module-fileinput