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

io操作-文件

时间:2019-11-19 13:55:30      阅读:69      评论:0      收藏:0      [点我收藏+]

标签:io操作   存在   查看   encode   ring   类型   import   多次   int   

io文件
str 字符串
bytes 字节串
bytes=str.encode()
str=bytes.decode()

1.生成文件对象
权限:r读 w写 a追加写 r+读写 w+写读 a+写读 (字符串格式)
加b 字节串格式 比如:‘rb+‘

file_object=open(file,‘w‘)

2.读写操作
读模式文件对象只能调用read(),写模式文件对象只能调用write(‘ok‘),读写模式才可以都调用
读写模式差别在于,文件是否存在,读模式打开文件必须存在,不然报错
写模式打开,文件存在,打开原文件;不存在,新建file文件
w 和 a模式差别在于,w模式,文件原有内容删除,从开头写;a模式,在文件最后追加
file_object.read()
read()全部读取 read(1024)读1024个字节
readline()读一行 readline(1024) 读1024字节,一行不够1024读一行;1025个字节,先读1024,下次调用再读1个
for line in file_object:
print(line) #每次读一行

file_object.write(‘ok‘+‘\n‘) #多次调用执行的时候,要加\n手动换行

刷新缓冲区条件:

1. 系统默认缓冲区被写满
2. 程序执行结束或者文件对象被关闭
3.程序中调用flush()函数
file_object.flush()
4. 行缓冲遇到换行
系统默认file_object = open(file_name, access_mode=‘r‘, buffering=-1) buffering=1行缓冲


3.关闭文件对象
file_object.close()

文件偏移量:
查看
file_object.tell()
设置
file_object.seek()

file_object.seek(0,0)开头位置 file_object.seek(0,1)当前 file_object.seek(0,2)结尾 前面的0表示从这个位置不移动

字符串打开,只能开头位置往后移
file_object.seek(2,0)开头位置往后移动2个位置

字节串打开,可以前后移动
file_object.seek(-10,2)结尾往前移动10个位置
file_object.seek(10,2)结尾往后移动10个位置

r /w 打开文件偏移量为0 a打开打开文件偏移量为结尾

文件描述符:系统对每个io操作生成一个不重复编号
file_object.fileno()
通过IO对象获取对应的文件描述符
后面Io多路复用 poll/epoll会用到

常用几个文件函数:
import os
os.path.getsize(‘file‘)查看文件大小
os.path.exists(‘file‘)查看文件是否存在
os.path.isfile(‘file‘)查看是否是file文件类型
os.path.abspath(‘file‘)查看文件绝对路径 os.path.abspath(__file__)查看本模块路径
os.path.isdir(‘file‘)查看是否是文件夹类型
os.listdir() 查看目录下的文件列表 返回list
os.remove(file) 删除

 

io操作-文件

标签:io操作   存在   查看   encode   ring   类型   import   多次   int   

原文地址:https://www.cnblogs.com/chenlulu1122/p/11888615.html

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