Python基础知识——文件操作

本文简要总结了Python中文件的处理及其一些文件函数的使用方法。
以下列出了Python中文件的打开和关闭的用法

打开文件

f=open(path,flag[ , encoding][ , errors])
path:要打开文件的路径
flag:打开方式
encoding:编码方式
errors:错误处理

打开方式(flag:)

  1. r:以只读方式打开文件,文件的描述符放在文件的开头
  2. rb:以二进制格式打开一个文件,用于只读,文件的描述符放在文件的开头
  3. r+:打开一个文件用于读写,文件的描述符放在文件的开头
  4. w:打开一个文件,只用于写入,若文件存在,将原先的内容覆盖;若文件不存在,则创建一个新文件。
  5. wb:打开一个文件用于写入二进制,若文件存在,将原先的内容覆盖;若文件不存在,则创建一个新文件。
  6. w+:打开一个文件用于读写,若文件存在,将原先的内容覆盖;若文件不存在,则创建一个新文件。
  7. a:打开一个文件用于追加,如果文件存在,文件描述符将会放到文件末尾
  8. a+:打开一个文件用于追加,如果文件存在,文件描述符将会放到文件末尾

关闭文件

f . close()

读文件

以下列出了Python中一些文件函数的使用方法及其相应的功能。

  1. 读取文件全部内容
    str1=f . read()
    print(str1)

  2. 读取指定字符串
    str2=f . read(10)
    print(str2)

  3. 读取整行,包括“\n”字符
    str3= f . readline()
    print(str3)

  4. 读取所有行并返回列表
    list1=f . readlines()
    print(list1)
    若给定的数字大于0,返回实际size字节的行数
    list1=f . readlines(25)
    print(list1)

  5. 修改描述符的位置
    f . seek(0)

  6. 自动关闭读文件
    with open(path,“r”,encoding=“utf-8”)as f2:
    print(f2 . read())

  7. 手动关闭读文件
    try:
    f1=open(path,“r”,encoding=“utf-8”)
    print(f1 . read())
    finally:
    if f1:
    f1 . close()

设路径(E:\Python test\filetext.txt)中的内容为:
abcdefghijklmnopqrstuvw
xyz
abcdefghijklmnopqrstuvw
xyz
abcdefghijklmnopqrstuvw
xyz
相应的代码如下:

path=r"E:\Python test\filetext.txt"
f=open(path,"r")
#读取文件全部内容

str1 = f.read()
print(str1)

#修改描述符的位置
f . seek(0)
#读取指定字符串
str2=f . read(10)
print(str2)

#修改描述符的位置
f . seek(0)
#读取整行,包括“\n”字符
str3= f . readline()
print(str3)

#修改描述符的位置
f . seek(0)
#读取所有行并返回列表
list1=f . readlines()
print(list1)

#修改描述符的位置
f . seek(0)
#若给定的数字大于0,返回实际size字节的行数
list1=f . readlines(25)
print(list1)

以上代码的运行结果为:

abcdefghijklmnopqrstuvw
xyz
abcdefghijklmnopqrstuvw
xyz
abcdefghijklmnopqrstuvw
xyz
abcdefghij
abcdefghijklmnopqrstuvw

['abcdefghijklmnopqrstuvw\n', 'xyz\n', 'abcdefghijklmnopqrstuvw\n', 'xyz\n', 'abcdefghijklmnopqrstuvw\n', 'xyz']
['abcdefghijklmnopqrstuvw\n', 'xyz\n']

写文件(将信息写入缓冲区)

  1. 手动关闭文件
    f=open(path,“w”)
    f . write(“write a information”)
    f.close()
  2. 刷新缓冲区
    f . flush()(直接把内部缓冲区的数据立刻写入文件,而不是被动的等待自动刷新缓冲区写入)

编码

  1. 对字符串进行编码:(二进制一定要编码解码)
    with open(path,“wb”)as f1:
    str=“write a information”
    f1 . write(str . encode(“utf-8”))
  2. 对字符串进行解码:
    with open(path,“rb”)as f2:
    data=f2 . read()
    print(data)
    newData=data . decode(“utf-8”)
    print(newData)

设E:\Python test\filewrite.txt是个空文件

path=r"E:\Python test\filewrite.txt"
#对字符串进行编码:(二进制一定要编码解码)
with open(path,"wb")as f1:
    str="write a information"
    f1 . write(str . encode("utf-8"))

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

以上代码的运行结果为:

b'write a information'
write a information

一个完整的编码解码过程

import pickle (数据持久性模块)
myList=[1,2,3,4,5,“write a infromation”]
f=open(path,“wb”)
pickle . dump(myList,f)
f . close()

读取:f1=open(path,“rb”)
tempList=pickle . load(f1)
print(tempList)
f1 . close()

path=r"E:\Python test\filewrite.txt"
#数据持久性模块
import pickle
#列表、元组别
myList=[1,2,3,4,5,"write a infromation"]
f=open(path,"wb")
pickle . dump(myList,f)
f . close()

#读取
f1=open(path,"rb")
tempList=pickle . load(f1)
print(tempList)
f1 . close()

以上代码的运行结果为:

[1, 2, 3, 4, 5, 'write a infromation']

运行后,文件中保存的是经过编码的数据,运行结果是解码后的数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值