本文简要总结了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()
  1. 刷新缓冲区
 f . flush()(直接把内部缓冲区的数据立刻写入文件,而不是被动的等待自动刷新缓冲区写入)

编码

  1. 对字符串进行编码:(二进制一定要编码解码)
 with open(path,“wb”)as f1:
 str=“write a information”
 f1 . write(str . encode(“utf-8”))
  1. 对字符串进行解码:
 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']

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