文件处理及其相关

Python文件操作详解
本文深入讲解Python中文件的处理方法,包括文件的打开、读取、写入及关闭过程,探讨不同模式如r、w、a的应用场景,以及编码方式的选择。通过实例演示如何在文本模式和字节模式下进行文件读写,适用于初学者和有经验的开发者。

encode unicode - > utf-8    将unicode的字符 转为制定的二进制
decode utf-8 - > unicode    将二进制转为unicode

 

name = ‘xxx’

print(name.encode("utf-8"))
print(type(name.encode("utf-8")))

byte = name.encode("utf-8")
print(byte.decode("utf-8"))

 

文件处理

文件是什么?
文件是操作系统提供一套虚拟概念
文件这个概念之所以出现 是为了简化对硬盘的操作

学习文件处理是为了 将数据永久保存 

 

 

打开文件的语法1
1.打开文件
f = open("test.txt",encoding="utf-8") # 是给系统发送了一个指令,让操作系统去打开文件,因为应用程序无法直接控制硬件

2.读取内容
data = f.read()
print(data)

3.关闭文件    不要忘记关闭
f.close()

open close read 等都是在给操作系统发送指令

 

开文件的语法2   在with代码执行完毕后 会自动调用close
with open("test.txt",encoding="utf-8") as f:
    data = f.read()
    print(data)

 

读写文件内容——写入内容:

注意在w模式下 一旦打开文件 立即清空原来的内容 如果文件不存在则创建新文件
写入字符串时需要手动拼接换行符
with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="w",encoding="utf-8") as f:
    f.write("egon\n")
    print(f.writable())
    f.writelines("\n".join(["abc","cba","nba"]))
    # f.writelines({"name":"bgon","age":20})
    pass

 

with  open("新文件.txt",mode="w")as f:
    pass

 参数1 文件路径  可以是相对 也可以是绝对
 参数2 mode  打开文件的模式
   r(只读)
   w(只写)

   + (可读可写) 了解即可
 参数3 encoding 编码方式  windows默认为GBK linux默认为UTF-8

f = open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="r",encoding="utf-8")
  读取内容 可以用参数指定要读取的个数,默认为-1 表示全部读取
  需要注意 read(-1) 仅限于文件较小时,如果文件太大会造成内存溢出
 data = f.read()
 print(data)

 print(f.readable()) # 判断是否可读
 print(f.writable()) # 判断是否可写

 line = f.readline() # 读取一行
 print(line)

 line2 = f.readline()
 print(line2)
 f.close()

 使用循环 来读取全部内容 方式1
 with open(r"D:\sh_fullstack_s6\day8\代码  \test.txt",mode="r",encoding="utf-8") as f:
     while True:
         line = f.readline()
         if not line: # 如果line为空则表示没有内容了
             print("\n没有内容啦!")
             break
         print(line,end="")

 使用循环 来读取全部内容 方式2
 with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="r",encoding="utf-8") as f:
     for line in f:
         print(line,end="")

 一次性读取全部
 with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="r",encoding="utf-8") as f:
     print(f.readlines()) # 会将每一行放入列表中

 在b模式只能写入字节
with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="wb") as f:
    f.write("abc".encode("utf-8"))
    f.write("你y好".encode("utf-8"))

默认情况下是读写文本模式 也就是t模式 同样需要与r\w连用
  rt(readText)\wt(readText)
t模式下  python解释器会自动进行编码和解码而b模式不会

 with open("xxx.png",mode="rb") as f:
     f.read(1024)

 with open(r"D:\sh_fullstack_s6\day8\代码\test.txt",mode="rb") as f:
     print(f.read(4).decode("utf-8")) # 当模式为字节模式时 单位为字节

 循环读取全部内容
with open("xxx.png",mode="rb") as f:
    while True:
        data = f.read(1024)
        if not data: # 如果data为空则意味着文件读完了
            break
        print(data)

 a表示追加写入 不会清空原数据,会把光标移动到最后
with open(r"D:\sh_fullstack_s6\day8\代码\test.txt","a",encoding="utf-8") as f:
    f.write("今儿个天气不错 下了点雨!")

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值