Python文件处理

Python文件处理

(慕课学习笔记)

1. 文件:

文件:Python中文件即对象;
linux文件:一切设备都可以看成文件,如:磁盘文件、管道、网络Socket、外设(U盘,SD卡等)等;
文件属性:用户,读、写、执行权限;

2. 文件打开方式

1)打开方式
语法:open(name,[,mode[buf]])
说明:name:文件路径; mode:打开方式; buf:缓冲buffering大小;
mode打开方式:

符号 说明
‘r’ 只读,文件必须存在
‘w’ 只写,不存在则创建,存在则清空内容
‘a’ 追加,不存在则创建
‘r+’/’w+’ 读写
‘a+’ 追加和读写
‘rb’,’wb’,’ab’,’rb+’,’wb+’,’ab+’ 二进制打开

2)读取方式
语法:
read([size]):读取文件(读取size个字节,默认读取全部)
readline([size]):读取一行
readlines([size]):读取完文件,返回每一行所组成的列表。size:读取文件io.DEFAULT_BUFFER_SIZE左右内容
iter:使用迭代器读取文件
3)写入方式
语法:
write(str):将字符串写入文件
writelines(sequence_of_strings):写多行到文件,参数为可迭代的对象(元祖或列表等)

#example
f=open(“hello.py”,‘w’)
f.write(“hello”)
f.close()
f.read()

3. 文件读取方式(iter)

f=open(“hello.py”)
iter_f=iter(f)  #使用迭代器不消耗大量内存
lines =0
for line in iter_f:
    lines+=1
lines 

4. 写缓存

1)写文件过程:
Python文件处理_第1张图片
说明:当文件未关闭时,写入的字符会存放在缓存中,不会直接写入磁盘,当调用close()或者flush()时,才会将内容写入磁盘。
2)Python写磁盘时机
主动调用close()或者flush()方法 将写缓存同步到磁盘
或者写入数据量大于或者等于写缓存,写缓存同步到磁盘上

5. 文件关闭

为什么要关闭?
1)将写缓存同步到磁盘;
2)linux系统中每个进程打开的文件的个数是有限的;
3)如果打开文件数到了系统的限制,再打开文件就会失败.

ps #查看系统进程
cat /proc/20384/limits #查看系统对20384进程所做的限制
file.fileno         #打开的文件个数的计数器,超过限制值,打开文件的操作将会失败
list_f=[]
for i in range(1025):
    list_f.append(open(“hello.py”,'w'))
    print(“%d:%d” % (i,list_f[i].fileno()))

6. 文件指针

1)写入和读取问题:
写入文件后,必须打开才能读取写入内容;读取文件后,无法重新再次读取读过的内容。
2)文件读取写入文件指针移动过程:
Python文件处理_第2张图片
3)文件指针操作
语法:seek(offset[,whence]):移动文件指针
说明:
offset:偏移量,可以为负数;
whence:偏移相对位置;

Python文件指针定位方式:

方法 位置
os.SEEK_SET 相对文件起始位置0
os.SEEK_CUR 相对文件当前位置1
os.SEEK_END 相对文件结尾位置2
#example
f=open(“hello.py”,'r+')
f.tell() #返回当前文件的偏移
f.seek(0,os.SEEK_SET)
f.seek(-5,os.SEEK_CUR)  #相对当前位置,向前进5个

7. 文件属性编码方式

1)文件属性
file.fileno():文件描述符
file.mode: 文件打开权限
file.encoding:文件编码格式
file.closed:文件是否关闭

Tips:f.+”Tab补齐” #查看方法
help(f.close)#查看具体方法

2)标准文件
sys.stdin :文件标准输入
sys.stdout:文件标准输出
sys.stderr:文件标准错误

#example
sys.stdin.fileno()
sys.stdout.write('1000') #相当于 print('1000')

3)文件命令行参数
sys.argv :得到命令行参数,是字符串组成的列表
4)文件编码格式
a=unicode encode(u’大家好。’,‘utf-8’)
如何创建一个utf-8或者其他编码格式的文件?
答:使用codecs模块提供的方法创建指定编码格式文件.
语法:open(fname,mode,encoding,errors,buffering):使用指定编码格式打开文件

f=codecs.open(“hello.py”,'w',utf-8)

8. Linux文件系统简介

1)简单示意图
Python文件处理_第3张图片

2)文件操作分析
Python文件处理_第4张图片

3)OS模块对文件和目录操作
语法:
os.open(filename,flag[,mode]):打开文件

flag:打开方式
os.O_CREAT #创建
os.O_RDONLY #只读
os.O_WRONLY #只写

os.read(fd,buffersize):读取文件
os.write(fd,string):写入文件
os.lseek(fd,pos,how):文件指针操作
os.close(fd):关闭文件

import os
fd =os.open("imooc.txt",os.O_CREAT | os.O_RDWR)
n=os.write(fd,'imooc')
l=os.lseek(fd,0,os.SEEK_SET)
str1=os.read(fd,5)
os.close(fd)

9. Python文件练习

1)ini配置文件格式

节:[session]
参数(键=值) name=value

#1.txt
Python文件处理_第5张图片

import configparser
cfg=configparser.ConfigParser()
cfg.read('1.txt')
cfg.sections() #['user_info', 'study']
for se in cfg.sections():
print(se)
print(cfg.items(se)) 
''' user_info [('name', 'delia'), ('pwd', '123')] study [('python_1', '11'), ('python_2', '22'), ('python_3', '33')] '''
cfg.set('user_info','pwd','123456') #修改条目
cfg.set('user_info','email','[email protected]'#添加条目
cfg.remove_option('user_info','email')

你可能感兴趣的:(python)