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

文件处理

时间:2019-10-10 15:30:52      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:ext   抛出异常   一个   image   with   重命名文件   seek   模仿   style   

打开文件的方式

方式一:

1. 打开文件,得到一个句柄并赋值给一个变量
f=open("aa","r",encoding="utf8")
2. 通过句柄对文件进行操作
data=f.read()
3. 关闭文件
f.close()

方式二:

with open("aa","r",encoding="utf8") as f:
    data=f.read()

打开文件的模式

r,只读模式【默认模式,文件必须存在,不存在则抛出异常】
w,只写模式【不可读;不存在则创建;存在则清空内容】
a,追加写模式【不可读;不存在则创建;存在则只追加内容】

rb,二进制只读模式
wb,二进制只写模式
ab,二进制追加模式

"+" 表示可以同时读写某个文件
r+, 读写【可读,可写】
w+,写读【可读,可写】
a+, 写读【可读,可写】

x, 只写模式【不可读;不存在则创建,存在则报错】
x+ ,写读【可读,可写】
xb

操作文件的方式

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.seek()
f.seek(0) 从文件开头重新开始读取
s.seek(offset,whence=0)
offset -- 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。
seek(0,0) 默认移动到文件开头或简写成seek(0)
seek(x,1) 表示从当前指针位置向后移x(正数)个字节,如果x是负数,则是当前位置向前移动x个字节
seek(x,2) 表示从文件末尾向后移x(正数)个字节,如果x负数,则是从末尾向前移动x个字节

典型的例子:模仿tail -f 
import time
with open(test.txt,rb) as f:
    f.seek(0,2) #将光标移动到文件末尾,再向后移动0个字节数 从文件末尾开始读
    while True:
        line=f.readline()
        if line:
            print(line.decode(utf-8))
        else:
            time.sleep(0.2)

修改文件的方式

import os
#以只读的方式打开源文件 以写的方式创建新的文件
with open(aa.txt,r,encoding=utf-8) as r_f,open(bb.txt,w,encoding=utf-8) as w_f:
    for line in r_f: #将源文件内容写入新文件  并且修改
        if line.startswith(你好):
            line=修改了\n
        w_f.write(line)
#目前就有了两个文件,但是只需要一个修改后的文件,原理就是删除源文件,将新文件重命名
##删除和重命名文件
os.remove(aa.txt)
os.rename(bb.txt,aa.txt)

二进制方式操作文件

技术图片
读出二进制文件的方法:
with open(aa,rb) as f:
    print(f.read())
    f.seek(0)
    print(f.read().decode(gbk)) #windows上是gbk
‘‘‘
b‘\xbb\xb9\xd3\xd0\xca\xab\xba\xcd\xd4\xb6\xb7\xbd\r\n‘
还有诗和远方
‘‘‘

写入二进制文件的方法:

with open("aa","wb") as f:
    f.write("还有诗和远方\n".encode("utf8"))

使用二进制方式,保存图片

with open(ff.jpg,rb) as read_f,        open(wuwu_new.jpg,wb) as write_f:
    write_f.write(read_f.read())

 

文件处理

标签:ext   抛出异常   一个   image   with   重命名文件   seek   模仿   style   

原文地址:https://www.cnblogs.com/lazyball/p/11648131.html

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