python 关于文件操作
1,要求在文件 2.py 第六行插入一句话;
1 #cat /root/python/2.py 2 昨夜雨疏风骤1 3 昨夜雨疏风骤2 4 昨夜雨疏风骤3 5 昨夜雨疏风骤4 6 昨夜雨疏风骤5 7 昨夜雨疏风骤6 8 昨夜雨疏风骤7
1 # vim /root/python/file.py 2 f = open("/root/python/2.py","r") 3 num = 0 4 for i in f.readlines(): 5 num+=1 6 if num == 6: 7 # i=i.strip() + "i love you" # 两种方法,下面那种性能更好些(join) 8 i=''.join([i.strip(),"i love you"]) 9 print i.strip() 10 f.close()
1 运行结果: 2 3 [root@localhost python]# python 3.py 4 昨夜雨疏风骤1 5 昨夜雨疏风骤2 6 昨夜雨疏风骤3 7 昨夜雨疏风骤4 8 昨夜雨疏风骤5 9 昨夜雨疏风骤6i love you 10 昨夜雨疏风骤7
1 2, readlines()是讲对象整体拷贝到内存当中,如果一个文件过大的话,读取效率会很低,所以用到了迭代器,意思是用到文件中某一行取一行,用一个取一个,而不是首先将整体翻入内存当中;
2 # vim /root/python/file.py 3 f = open("/root/python/2.py","r") 4 num = 0 5 for i in f: 6 num+=1 7 if num == 6: 8 i=''.join([i.strip(),"i love you"]) 9 print i.strip() 10 f.close()
#f 是 即将在for 循环内部的一个迭代器,而不是之前的 f.readlines(),readlines是将打开文件的内容完全复制一 份,而此时的f是取一行用一行,print完一行内存当中
就没有了这一行,在对一个打的文件进行运用时这种性能会更好一些。
3,创建一个新的文件,并且能够实现文件内容某行的字符窜拼接。 已有文件: [root@localhost python]# vim shici.py 轻舟已过万重山1 轻舟已过万重山2 轻舟已过万重山3 轻舟已过万重山4 轻舟已过万重山5 轻舟已过万重山6 轻舟已过万重山7 脚本如下: [root@localhost python]# vim 1.py f_read = open("/root/python/shici.py",'r') f_write = open("/root/python/mumu.py",'w') num=0 for line in f_read: num += 1 if num == 5: line = '------'.join([line.strip(),"hello 岳飞\n"]) f_write.write(line) f_read.close() f_write.close() 运行脚本: [root@localhost python]# python 1.py 查看结果: [root@localhost python]# vim mumu.py 轻舟已过万重山1 轻舟已过万重山2 轻舟已过万重山3 轻舟已过万重山4 轻舟已过万重山5------hello 岳飞 轻舟已过万重山6 轻舟已过万重山7