python自学第16天之文件基本操作

本文详细介绍了Python中文件操作的各种模式,包括读(r)、写(w)、追加(a)、读写(r+)、写读(w+)和追加读写(a+)模式。对于每种模式,都提供了示例代码,展示了如何打开、读取、写入和关闭文件。此外,还讲解了文件光标的移动、文件截断等高级操作,对于理解和应用Python文件操作非常有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一:.文件操作的函数

open(文件名(路径),mode="?",encoding="字符集")

文件路径:

        1.绝对路径:从磁盘的根目录寻找

                f = open("e:/abc/里皮.txt",mode="r",encoding="gbk")

                s = f.read()

   2.相对路径(用的多),相对于当前程序所在的文件夹    ../代表上一层文件夹
        f = open("文件读取操作.py",mode="r",encoding="UTF-8")
        s = f.read()
        print(s)
        f.close()

例:

1.

f = open("呵呵呵",mode="r",encoding="utf-8")
#方案1(有缺陷):
while 1:
    s = f.readline().strip()  #一次读一行    strip()去掉换行/空格
    if s != ""
        print("内容是:",s)
f.close()


#方案2:
for line in f:    #文件是一个可迭代对象
    print(line.strip()) #一行一行的处理数据
f.close()

 

2.模式:r,w,a,r+,w+,a+,rb,wb,ab,r+b,w+b,a+b

        #(1) 带w的,只要你操作了,就会清空源文件
        # 如果文件不存在,会自动创建文件
    f = open("呵呵呵", mode="w", encoding="utf-8")
    f.write("呀!养狗了没有?")
    f.flush()
    f.close()
#(2)a模式
#写的时候,换行需要手动控制 \n

    f = open("阿西吧",mode="a",emcoding="utf-8")
    f.write("思密达?\n")
    f.write("思密达?")
    f.flush()
    f.close()
#(3)b模式 ,rb,wb,ab,bytes 如果处理的是非文本文件 ,mode里如果有b,encoding就不能给了
    读:f = open("c:/pdd.jpg",mode="rb")  #这里不能写encoding
    写:e = open("e:/pdd.jpg",mode="wb")
    for line in f:  #从c盘读取
        e.write(line)   #写入到e盘
    f.close()
    e.flush()
    e.close()
#(4) r+  读写  读的时候,默认光标在最开头
#不论你读取了多少内容,光标在哪,写入的时候都是在结尾写入
#最好用的读写同时存在的模式
    f = open("阿西吧",mode="r+",encoding="utf-8")
    s = f.read()
    f.write("不养了,送人")  #在末尾写
    f.close()
#(5) w+ 很少用,因为会清空文件内容
    f = open("阿西吧",mode="w+",encoding="utf-8")
    f.write("张云雷也要退出德云社")  #写完之后,光标在最后,读取是没有内容的
    f.seek(0) #移动光标
    s = f.read()
    print("读取的内容是:",s)
    f.flush()
    f.close()
#(6) a+ 追加
    f = open("阿西吧",mode="a+",encoding="utf-8")
    f.write("我要加入德云社")
    f.seek(0)
    s = f.read()
    print(s)
    f.flush()
    f.close()
3.常用的操作
#1.光标(seek)*
        #(1)移动到开头  seek(0)
        f = open("阿西吧",mode="r",encoding="utf-8")
        for line in f:
            print(line.strip())
        f.seek(0)   #移动到开头
        for line in f:
            print(line.strip())
        f.close()

        #(2) 移动到结尾  seek(0,2)   seek 读取的是byte read读取的是字符
        open("阿西吧",mode="r",encoding="utf-8")
        f.seek(3) #3个byte => 1个中文
        s = f.read(1)  #读取一个字符
        print(s)
        f.close()

        seek(偏移量,位置)
        seek(0,2)  #在末尾的偏移量是0,末尾


    #2.tell可以帮我们获取到当前光标在什么位置
    pritn(f.tell())  #光标位置


    #3.truncate截断文件
    f = open("啊同类个统统",mode="w",encoding="utf-8")
    f.write("哇哈哈哈压缩概论")
    f.seek(9)
    print(f.tell())

    #从文件开头截断到光标位置
    #如果给参数,从头截断到参数位置
    f.truncate(12)
    f.close()

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值