Python文件处理2021-08-27

读文件

过程:

1、打开文件
2、读文件内容
3、关闭文件

打开文件

格式:

open(path,flag[, encoding][,errors]
path:要打开文件的路径
flag:打开方式
r    以只读的方式打开文件,文件的描述符放在文件的开头
rb   以二进制格式打开一个文件作用于读,文件的描述符放在文件的开头
r+   打开一个文件用于读写,文件的描述符放在文件的开头
w    打开一个文件只用于写入,如果该文件存在,会覆盖;如果不存在,则创建新文件。
wb   打开一个文件只用于写入二进制,如果该文件存在,会覆盖;如果不存在,则创建新文件。
w+   打开一个文件只用于读写,如果该文件存在,会覆盖;如果不存在,则创建新文件。
a    打开一个文件用于追加,如果该文件存在,文件描述符将会放在文件末尾
a+   打开一个文件用于追加
encoding:编码方式
errors:错误处理
# ignore忽略错误
path = r"F:\pythonproject\027- 文件处理\file1.txt"
f = open(path, "r", encoding="utf-8", errors="ignore")

读取内容

1、read()读取文件的全部内容
str1 = f.read()
print(str1)
2、读取指定字符数
str2 = f.read(10)
print("*" + str2 + "*")
str3 = f.read(3)
print("*" + str3 + "*")
3、读取整行,包括“\n”字符
str4 = f.readline()
print(str4)
str5 = f.readline()
print(str5)
4、读取指定字符数
str6 = f.readline(10)
print(str6)

5、读取所有行并返回列表

list7 = f.readlines()
print(list7)
6、若给定的数字大于0,返回实际size字节的行数
list8 = f.readlines(22)
print(list8)
7、修改描述符的位置
f.seek(10)
str9 = f.read()
print(str9)

关闭文件

f.close()

一个完整的过程

try:
    f1 = open(path, "r", encoding="utf-8")
    print(f1.read())
finally:
    if f1:
        f1.close()

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

写文件

打开文件

import time
path = r"F:\pythonproject\027- 文件处理\file3.txt"
f = open(path, "w", encoding="utf-8")

写文件

1、将信息写入缓冲区

f.write("fanfan is a good man!")

2、flush()刷新缓冲区

直接把内部缓冲区的内容写入文件 ,而不是被动的等待自动刷新缓冲区写入
while 1:
    f.write("sunck is a good man\n")
    f.flush()
    time.sleep(0.1)
f.close()

或者

with open(path, "a") as f2:
    f2.write("sunck is")

编码与解码

path = r"F:\pythonproject\027- 文件处理\file5.txt"

编码

with open(path, "wb") as f1:
    str = "fanfan is a good man凯!"
    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))

list-tuple-set-dict的文件操作

import pickle  #数据持久性模块

myList = (1, 2, 3, 4, 5, "fanfan is a good man")
path = r"F:\pythonproject\027- 文件处理\file6.txt"
f = open(path, "wb")

pickle.dump(myList, f)
f.close()

#读取
f1 = open(path, "rb")
tempList = pickle.load(f1)
print(tempList)
f1.close()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值