File文件读写

一、python3读文本

file=open('/Users/apple/Desktop/download.json','rt',encoding='utf8')
print(file.read())
####{
    "ecode": 2, 
    "emsg": "补丁", 
    }

二、处理二进制文件

file=open('music.wav','rb')

使用struct来解析二进制数据

struct.unpack('h',music_file[0:22])

三、设置文件的缓冲

python文件对象默认有缓冲操作,在写入时首先会加入到缓冲中,当缓冲溢出时才从缓冲溢出放入磁盘,具有4096个字节的缓冲(根据平台有关),可以设置缓冲的大小,分为
全缓冲:设置buffering为n的倍数
行缓冲:buffering为1
无缓冲:buffering为0

1.全缓冲:设置buffering为1的n倍
file=open('/Users/apple/Desktop/download.json','rt',encoding='utf8',buffering=2048)
2.行缓冲
file=open('/Users/apple/Desktop/download.json','rt',encoding='utf8',buffering=1)

四、文件映射到内存

希望可以将文件数据缓存到内存中,并且可以随意读取位置
多个进程调用同一个文件,且还能实现进程通信,需要将文件内存映射到各自的线程中
使用mmap库
mmap函数会返回一个包含所有数据的数组,这时候修改数组对应位置的二进制编码即可

import mmap
##注意第一个参数是一个文件编号,需要另外通过openNo函数获得
fileNum = file.fileno()
m=mmap.mmap(fileNum,0,access=mmap.ACCESS_WRITE)
m[0]='0x11'

五、获取文件的状态

使用os.path函数根据文件路径名获取相应

import os
import time
path='/Users/apple/Desktop/download.json'
dir=os.path.isdir(path)
size=os.path.getsize(path)
atime=os.path.getatime(path)
atime=time.localtime(atime)
print(dir,atime,size)
#False time.struct_time(tm_year=2018, tm_mon=3, tm_mday=19, tm_hour=20, tm_min=51, tm_sec=17, tm_wday=0, tm_yday=78, tm_isdst=0) 214

六、使用临时文件

采集临时数据时,可以使用临时文件进行存储,临时文件在使用后会自动删除。
使用临时文件
1.TemporaryFile 不会被系统找到 并且每次读取前 需要使用seek方法将
下表移动到指定位置
2.NameTemporaryFile 创建的临时文件可以在tmp路径下找到,TemporaryFile的delete参数可以控制文件关闭后是否删除

from tempfile import TemporaryFile,NamedTemporaryFile
f=TemporaryFile()
f.write('sss'*100)
f.seek(0)
f.read()

你可能感兴趣的:(File文件读写)