博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
文件操作
阅读量:6327 次
发布时间:2019-06-22

本文共 2104 字,大约阅读时间需要 7 分钟。

打开文件

  • 文件路径:相对路径 : 1-读文件.py 绝对路径 : C:\Users\xlg\Desktop\文件操作\1-读文件.py
  • r :以只读的方式打开文件,文件描述符放在文件的开头位置
  • rb : 以二进制格式打开文件,文件只读,文件描述符放在文件的开头位置
  • w:以只写的方式打开文件,如果文件存在,那么覆盖该文件,如果文件不存在,则会创建文件。
  • wb:以二进制格式打开文件,文件用于写入,如果文件存在,那么覆盖该文件。
  • w+:以读写的方式打开文件
  • a:打开一个文件用于追加写入,如果文件不存在,则会创建文件;如果文件存在,则会在文件末尾写入内容。
  • a+:以读写的方式打开文件
  • encoding:文件的编码格式
    errors:错误处理
    strict:默认方式,如果遇到非法字符,抛出异常
    ignore:忽略非法字符
    replace:用?代替非法字符
    open:返回值:文件描述符

打开普通文件

f1 = open("file.txt","r", encoding="utf-8")# 当文件不存在,抛出异常# FileNotFoundError: [Errno 2] No such file or directory: 'file.txt'# 打开二进制格式的文件:不能设置encodingf2 = open("file.txt", "rb")# 指定错误处理方式f3 = open("file.txt", mode="r", encoding="utf-8", errors="ignore")

读取文件

# 读取文件所有内容    str1 = f1.read()# 读取指定字符个数str2 = f1.read(4)# 读取整行 包括\n   size代表字符个数 中文也算一个str3 = f1.readline(size)  # 读取所有行,返回一个列表str4 = f1.readlines()#如果给定的size数字大于0,实际返回的size字符数会比写入的size大,原因需要填充缓冲区# 修改描述符的位置  seek()# tell()  返回描述符的位置print(f1.read(3))print(f1.tell()) # 3f1.seek(3)print(f1.read(3))  # 打印第四个到第六个字符

关闭文件

f1.close() # 必须关闭try:    f2 = open("file.txt", "r", encoding="utf-8")    print(f2.read())except FileNotFoundError as e:    print("文件没有找到")finally:    if f2:        f2.close()# 简洁的方式:with open("file.txt", "r", encoding="utf-8") as f5:print(f5.read())

写入文件

with open("c.txt","w", encoding="utf-8") as f2:f2.write("124789kfxfh")

编码与解码

# 编码  encode("编码格式")with open("d.txt","wb") as f1:    str1 = "北京你好,我有沙尘暴,hello world"    f1.write(str1.encode("GBK"))# 解码  decode("编码格式")with open("d.txt","rb") as f2:    data = f2.read()    print(data)    print(type(data))  # byte 字节    newStr =data.decode("GBK")    print(newStr)    print(type(newStr))  # str

存储操作

有时候,我们需要将某些字符串、列表、字典、元组等数据长久保存,现在,这个时候,就需要使用永久性存储的模块文件pickle。pickle模块可以将对象转换为一种可以存储或读取的格式。

pickle:该模块实现了数据的序列化与反序列化,通过pickle的序列化操作,可以实现将程序中的对象保存到文件信息中,实现永久性存储。

通过pickle的反序列化操作,可以实现将程序中的永久性存储的对象解析出来。

list1 = [1,2,3,4,5,6]f1 = open("list.data", "wb")# 将列表信息保存到文件中# pickle.dump(即将存储的数据对象, 存入的文件)   序列化操作# 建议:保存对象时,文件的后缀名不要使用电脑系统能够打开的格式pickle.dump(list1, f1)f1.close()# 读取文件tmp = []# 打开文件f2 = open("list.data", "rb")# pickle.load(读取的文件)  有返回值tmp = pickle.load(f2)print(tmp)f2.close()

转载地址:http://sjwoa.baihongyu.com/

你可能感兴趣的文章
Scala学习(三)----数组相关操作
查看>>
Matlab基于学习------------------函数微分学
查看>>
UVa 11790 - Murcia's Skyline
查看>>
启动时创建线程并传递数据
查看>>
汉字正字表达式解决方案
查看>>
lemon OA 下阶段工作安排
查看>>
WCF X.509验证
查看>>
Fatal error: Class 'GearmanClient' not found解决方法
查看>>
jsoup分解HTML DOM
查看>>
Axure RP介绍
查看>>
ini_set()函数的使用 以及 post_max_size,upload_max_filesize的修改方法
查看>>
联想S720/S720i通刷刷机包 Vibe V1.0
查看>>
java异常 之 异常的层次结构
查看>>
T - stl 的mapⅡ
查看>>
Atitit .c#的未来新特性计划草案
查看>>
mysql分表技术
查看>>
.Net 垃圾回收和大对象处理 内存碎片整理
查看>>
HiKey连接
查看>>
wget 参数大全
查看>>
使用Loadrunner进行文件的上传和下载
查看>>