一:学习内容

  • 读文件
  • 写文件
  • 编码与解码

二:读文件--步骤分解

1.过程

第一步:打开文件
第二步:读文件内容
第三步:关闭文件

2.第一步:打开文件

open(path,flag[,encoding][,errors])

参数说明:
path:要打开文件的路径
flag:打开方式(
r:以只读的方式打开文件,文件的描述符放在文件开头
rb:以二进制格式只读的方式打开文件,文件的描述符放在文件开头
r+:打开一个文件用于读写,文件描述符放在文件的开头
w:打开一个文件只用于写入,文件的描述符放在文件的开头,如果该文件已经存在会覆盖,如果不存在则创建新文件
wb:打开一个文件只用于写入二进制,如果该文件会覆盖,如果该文件不存在新创建文件
w+:打开一个文件用于读写,如果该文件存在会覆盖,如果该文件不存在新创建文件
a:打开一个文件用于追加,如果文件存在文件描述符将会被放到文件末尾
a+:打开一个文件用于追加
encoding:编码方式
errors:错误处理

path = r"F:\python_test\read_practice.txt"
#f = open(path,"r",encoding="utf-8",errors="ignore")   #ignore 忽略错误
f = open(path,"r",encoding="utf-8")

3.第二步:读文件内容

#法1、读取文件全部内容,适合读文件比较小的
str1 = f.read()
print(str1)

#法2、读取指定字符数
str2 = f.read(10)  #读取文件10个字符,1个中文是1个字符
print(str2)
str3 = f.read(10)   #继续上一次读取结束的位置继续读取
print(str3)

#法3、读取整行包括"\n"字符
str4 = f.readline()
print(str4)
str5 = f.readline()  #继续下一行读取
print(str5)

#法4、读取指定字符数
str6 = f.readline(10)
print(str6)

#法5、读取所有行包括"\n"字符并返回列表
list7 = f.readlines()
print(list7)

#法6、若给定的数字大于0,返回实际size字符的行数
list7 = f.readlines(25)
print(list7)

#修改文件描述符位置
f.seek(0)
str9 = f.read()
print(str9)

4.第三步:关闭文件

f.close()

三:读文件--完整过程

1.法一
try:
    f1 = open(path,"r",encoding="utf-8")
    print(f1.read())
finally:
    if f1:   #打开失败时f1对象还未创建就不用关闭了
        f1.close()

2.法二,最简洁的写法,不用自己手动去close了

with open(path,"r",encoding="utf-8") as f2:
    print(f2.read())

四:写文件--步骤分解

1.过程

第一步:打开文件
第二步:写文件内容
第三步:关闭文件

2.刷新缓冲区两种方式

自动刷新  f.close()
手动刷新  f.flush()

3.第一步:打开文件

path = r"F:\python_test\write_practice.txt"
f = open(path,"w",encoding="utf-8")

4.第二步:写文件

#将信息写入缓冲区
f.write("tester is a good girl")

#刷新缓冲区,就能写入文件
#直接把缓冲区的数据立刻写入文件,如果没有写刷新缓冲区则会在关闭文件时在把缓冲区写入文件
f.flush()

5.第三步:关闭文件

f.close()

五:写文件--完整过程

1.法一
try:
    f1 = open(path,"w",encoding="utf-8")
    f1.write("good girl")
finally:
    if f1:   #打开失败时f1对象还未创建就不用关闭了
        f1.close()

2.法二-覆盖写入,简洁的写法,不用自己手动去close了

with open(path,"w",encoding="utf-8") as f2:
    f2.write("good girl")

3.法三-追加写入,简洁的写法,不用自己手动去close了

with open(path,"a",encoding="utf-8") as f3:
    f3.write("young girl")

执行完法二和法三的结果:文件被写入内容

六:编码与解码

1.说明

不是二进制时:
文件打开的编码要一致,即写文件和读文件open中的encoding要一致

二进制文件时:
文件写入读取的编码要一致

2.不是二进制文件读写操作

path = r"F:\python_test\encode_file.txt"

with open(path,"w",encoding="utf-8") as f1:
    str = "tester is a good girl测试"
    f1.write(str)

with open(path,"r",encoding="utf-8") as f2:
    data = f2.read()
    print(data)
    print(type(data))

3.二进制文件读写

path = r"F:\python_test\encode_file.txt"

#with open(path,"wb",encoding="utf-8") ,当方式里有b时,不能有encoding参数,否则会报错binary mode doesn't take an encoding argument
with open(path,"wb") as f1:
    str = "tester is a good girl测试"
    f1.write(str.encode("utf-8"))

with open(path,"rb") as f2:
    data = f2.read()
    print(data)
    print(type(data))
    newData = data.decode("utf-8")
    print(newData)
    print(type(newData))

最新文章

  1. (int)、int.Parse()、int.TryParse()和Convert.ToInt32()的区别
  2. Android学习 之 ColorStateList按钮文字变色
  3. ccc 音乐播放
  4. 百度地图API说明
  5. hadoop2.2.0部署
  6. 嘿嘿,JAVA里第一次运行单元测试成功,立存
  7. QTableWidget嵌入QpushButton后定位是哪一个QpushButton
  8. [转]PHP错误日志
  9. Android Wear 开发入门
  10. 利用ARM批量自动化创建SSD多磁盘RAID0虚拟机
  11. handsontable插件HOOK事件
  12. “_In_opt_z_”: 未声明的标识符
  13. RH033读书笔记(2)-Lab 3 Getting Help with Commands
  14. jquery ready方法实现原理 内部原理
  15. AC 自动机 模板
  16. MAVEN打包报错:com.sun.net.ssl.internal.ssl;sun.misc.BASE64Decoder;程序包 javax.crypto不存在处理办法
  17. 题解 CF540D 【Bad Luck Island】
  18. Android笔记(六):线程及线程通信
  19. Mariadb使用xtrabackup工具备份数据脚本
  20. MySQL大数据量分页查询方法及其优化

热门文章

  1. O036、Snapshot Instance 操作详解
  2. HBuilderX 打包
  3. 通过Callable接口实现多线程
  4. python:常用模块 知识整理
  5. JavaWeb【八、JSP指令与动作元素】
  6. QQ空间添加背景音乐
  7. Linux使用wget仿站
  8. mac+django(1.8.2)+uwsgi+nginx 部署
  9. 部署NFS共享
  10. html5测试