码迷,mamicode.com
首页 > 其他好文 > 详细

第三章 文件处理

时间:2017-11-24 17:56:50      阅读:157      评论:0      收藏:0      [点我收藏+]

标签:文本   col   rem   自己   编码   默认   系统   首部   inux   

一.在python中

1. 打开文件,得带文件句柄并赋值给一个变量

f=open(‘a.txt‘,‘r‘,enconding=‘utf-8‘)#默认打开模式为r

2. 通过句柄对文件进行操作

data=f.read()

3. 关闭文件

f.close()

4. 强调第1点:操作完文件后,要及时回收操作系统打开的文件

f.close()

另外一种方式,可不用回收资料,使用with...as....

with open(‘a.txt‘,‘r‘) as f:

  data=f.read()

5. 强调第2点:open(..)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码是window的gbk,linux下是utf-8,若保证不乱码,文件以什么格式存,就以什么格式取

二.打开文件的模式

文件句柄=open(‘文件路径‘,‘模式’)

1. 打开文件的模式有(默认为文本模式)

‘r‘读模式,默认模式,文件必须存在,不存在则抛出异常

‘w‘写模式,不可读,不存在则创建,存在则清空内容

‘a’追加模式,不可读,不存在则创建,存在则追加内容

2. 对于非文本模式,我们只能用b模式,‘b’表示以字节的方式操作

‘rb’,‘wb‘,‘ab‘

注意:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型,不能指定编码

三.操作文件的方法

f.read()#读取所有内容,光标移动到文件末尾

f.readline()#读取一行内容,光标移动到第二行首部

f.readlines()#读取每一行内容,存放于列表中

 

f.write(‘1111\n222\n‘)#针对文本模式的写,需要自己写换行符

f.write(‘1111\n222\n‘.encode(‘utf-8‘))#针对b模式的写,需要自己写换行符

f.writelines([‘333\n‘,‘444\n‘])#文件模式

f.writelines([bytes(‘333\n‘,encoding=‘utf-8‘),‘444\n‘.encode(‘utf-8‘)]) #b模式

四.文件的修改

方式一:将硬盘存放的该文件的内容加载到内存,在内存中是可以修改的,修改完毕后,再由内存覆盖到硬盘

import os

with open(‘a.txt‘) as read_f,open(‘a.txt.swap‘,‘w‘) as write_f:

  data=read_f.read()#全部读入内存,如果文件很大,会很卡

  data=data.replace(‘xiao‘,‘xi‘)#在内存中完成修改

 

  write_f.write(data)#一次性写入新文件

os.remove(‘a.txt‘)

os.rename(‘a.txt.swap‘,‘a.txt‘)

方式二:将硬盘存放的文件内容一行一行地读入内存,修改完毕就写入新文件,最后用新文件覆盖源文件

import os

with open(‘a.txt‘) as read_f,open(‘a.txt.swap‘,‘w‘) as write_f:

  for line in read_f:

    line=line.replace(‘xiao‘,‘xi‘)

    write_f.write(line)

os.remove(‘a.txt‘)

os.rename(‘a.txt.swap‘,‘a.txt‘)

 

第三章 文件处理

标签:文本   col   rem   自己   编码   默认   系统   首部   inux   

原文地址:http://www.cnblogs.com/xiaojing3711/p/7891474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!