文件操作


1. open 的书写格式

open  #打开
文件句柄 = open(文件名字(必须是字符串),mode(模式,操作方式),文件的编码集)

2. r模式

### r模式读内容
#f = open('t1',mode='r',encoding='utf-8')    #r  只读
#f(文件句柄) = open('t1',mode='r',encoding='utf-8')   #所有对文件的操作都是操作文件句柄 
f = open('t1',mode='r',encoding='utf-8')
content = f.read()
print(content)      #特点:一次性全部读取

content = f.read(3)
print(content)      #mode = 'r',read里的内容就是表示读取的字符数量

content = f.readline()
print(content)     #读取一行,但是有个\n换行

content = f.readline(100)
print(content)     #只读一行里的几个数字 如果超出数字就只读一行

content = f.readlines()
print(content)     #读取一行 一行又一行,存放在一个列表里.

4. rb模式

#rb模式读取字节
#从磁盘开始查找的就是绝对路径
#如果直接写文件的格式叫做相对路径(qq.jpg):相对于pycharm来查找的一种路径 
#推荐写法是相对路径:
f = open('t1',mode='rb')
#文件路径加入双斜杠  f = open('c:\\Users\\oldboy\\qq.jpg',mode='rd')
f = open(r'c:\Users\oldboy\qq.jpg',mode='rd')
print(f.read())

5. w模式

#w模式
#覆盖写内容,在写之前先把文件清空
f = open('t1.txt',mode='w',encoding='utf-8')
f.write('你好,世界')      #w模式如果文件不存在就新建一个
f.write('hello,world')   #新内容覆盖以前的内容

#w只有写没有读的功能
f = open('t1.txt',mode='w',encoding='utf-8')
print(f.write('内容'))    #返回写的数量

6. wb模式

#wb模式写字节
f = open('t1.txt',mode='rb')
f = open('t2.txt',mode='wb')
f1.write(f.read())

7. a模式

#a模式 追加
f = open('t1',mode='a',encoding='utf-8')
f.write('内容')    #在文件最后添加内容

8. ab模式

ab
f = open("2.jpg","ab")
f.write("你好啊".encode("utf-8"))

9. 可读可写模式

#可读可写模式
r+   读+写
w+   写+读
a+   追加+读
f = open('t1',mode='r+',encoding='utf-8')
print(f.read())   #读内容
f.write('内容')   #写在后面

f = open('t1',mode='w+',encoding='utf-8')
f.write('内容')
f.seek(0)         #移动文件光标
print(f.read())     

f = open('t1',mode='a+',encoding='utf-8')
f.seek(o)
print(f.read())    #a模式默认光标在后面
f.write('内容')

#最常用的是r+

10. repr -- 显示数据的原生态

s = "[1,'2',3,4]"
print(s)
print(repr(s))  

11. 解决大文件

#解决大文件:
for i in f:
    print(i)  # 本质就是一行一行进行读取

f = open(r'..\day6\t1.txt',mode='r',encoding='utf-8')
#...\  返回上一级
f.write()

12. with open

#with open 

with open("萝莉小姐姐电话号","r",encoding="gbk")as f,\
    open("萝莉小姐姐电话号.txt","w",encoding="gbk")as f1:
    for i in f:
    s1 = i.replace("大烧饼","井盖")
        f1.write(s1)
import os
os.rename("萝莉小姐姐电话号","萝莉小姐姐电话号.bak")
os.rename("萝莉小姐姐电话号.txt","萝莉小姐姐电话号")

with open("萝莉小姐姐电话号","r",encoding="gbk")as f:
#     pass # 缩进里操作文件
# print(f.read())  

13. 总结

r : 只读,不能写
    read()  读取全部   #模式是r的时候,read(3)就是读取三个字符; 模式是rb的时候,read(3)就是读取三个字节
    readline()  读取一行 #返回的内容会有\n   
    readlines() 一行一行的读存放在一个列表中
w : 清空写,不能读
    先清空文件的内容,再写
    当文件不存在的时候会创建一个文件
a : 追加写.不能读
    写的内容一直都在文件的末尾.
r+:读写
    错误示范:先写后读
    正确是:限度后写
w+:写读
    写读的时候是读不到内容的,除非用seek(0)挪动光标
a+:追加写
    追加写的时候是读不到内容的,除非用seek(0)挪动光标
rb,wb,ab(****)
rb:读字节
    read()  全部读取
    read(3) 看文件的操作方式  rb/wb/ab 字节
    readline 读取一行(自带换行符)
    readlines() 一行一行读取存放在列表中

wb:清空,写
    open("xxx","wb")  # 进行清空
        write()  只能写字节
ab:追加
    open("xxx","ab")
        write()  只能写字节
其他操作:
    tell()  查看光标返回的是字节
    seek() 移动光标
        seek(0,0) 移动文件头部
        seek(0,1) 当前位置
        seek(0,2) 移动文件末尾

        seek(3)  # 按照字节进行计算 (计算方式根据编码计算)
with open("文件路径","操作模式",编码")as f:
        操作文件

    with open的好处:
        1.可以同时打开多个文件
        2.能够自动关闭文件
 修改文件内容:
        1.创建一个新的文件
        2.将文件中的内容进行替换
        3.替换后的内容写入新文件中
        4.改变文件名

#最常用的:r,w,a,r+,a+
优质内容筛选与推荐>>
1、luogu 2812 校园网络 tarjan
2、android adb 无法启动
3、【开源一个小工具】一键将网页内容推送到Kindle
4、如何用C#在Excel中生成图表?
5、Scrapy安装介绍


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号