Python 文件操作

1. 字符简介

字符:无论什么语言,独立的一个文字就是一个字符

存储单位:

  Byte  字节

  bit   位

  1B = 8b

  B:字节,1 Byte = 8 bit

字符大小:

  任何字符集:英文和数字都是一个字节,汉字等是多个字节存储

  GB系列编码:存储一个汉字使用2个字节

  UTF系列编码:存储一个汉字使用3个字节

字符编码:

  ASCII

  中文编码:

    GB2312    5000个常用汉字

    GB18030  升级版,15000个汉字

    GBK    包含所有中文的编码(推荐)

    BIG5    繁体中文编码

  万国码:

    unicode:包含世界上所有的文字

    utf-8:  可变长的unicode编码

2. 文件基本操作

readline:读取一行文件内容

readlines:将文件中的内容按照换行读取到列表当中

writelines:将内容是字符串的可迭代性数据写入文件中  参数:内容是字符串类型的可迭代性数据

truncate:把要截取的字符串拿出来,清空文件,再把字符串写入到文件中(操作字节)

readable:判断文件是否可读

writeable:判断文件是否可写

打开模式:

  w  写入模式,文件不存在则创建,存在则先清空内容,并且将文件指针放在文件的开头

fp = open("ceshi.txt",mode="w",encoding="utf-8") # 创建文件对象
fp.write("abc") # 写入数据
fp.close() # 关闭文件

 

  r    读取模式,文件不存在则报错,存在则打开文件,并且将指针放在文件的开头

fp = open("ceshi.txt",mode="r") # 创建一个文件对象
res = fp.read()     # 读取内容
print(res) # 打印
fp.close() # 关闭文件

  a    追加模式,文件不存在则创建文件,存在则打开文件,并且将指针放在文件的末尾

fp = open("ceshi.txt","a",encoding="utf-8")  # 创建一个文件对象
fp.write("111aaa") # 在文件末尾追加数据
fp.close() # 关闭文件

 

  +    增强模式(可以让文件具有读写功能)

# r+模式 先读后写
fp = open("ceshi.txt","r+",encoding="utf-8") # 创建一个文件对象
res = fp.read() # 读取文件数据
print(res) 
fp.write("222ccc") # 写入数据
fp.seek(0)  # 把光标移到行首
res = fp.read() # 读取文件
print(res)
fp.close()

# r+模式 先写后读
fp = open("ceshi.txt","r+",encoding="utf-8")
fp.seek(0,2) # 把光标移到末尾
fp.write("asdf")
fp.seek(0) # 把光标移到行首
res = fp.read()
print(res)
fp.close()

 

  b    bytes模式(二进制字节流)

with open("ceshi1.txt","wb") as fp:
    fp.write("abc".encode())

with open("ceshi1.txt","rb") as fp:
    res = fp.read().decode()
    print(res)

 

将字符串和字节流类型进行转换:

  encode()编码  将字符串转化成字节流

  decode()解码  将Bytes流转化成字符串

utf-8编码,默认一个中文占三个字节,一个英文或符号占一个字节

read(字节)  读取字符的个数

seek(字节)  调整指针的位置

tell(字符)   当前光标左侧所有的字节数

刷新缓冲区 flush

  当文件关闭时自动刷新缓冲区

  当整个程序运行结束时自动刷新缓冲区

  当缓冲区写满时自动刷新缓冲区

  手动刷新缓冲区

with 语法:自动关闭文件

3. 压缩模块 zipfile(zip)

3.1 压缩文件

import zipfile    # 导入 zipfile 模块

zf = zipfile.ZipFile("ceshi1.zip","w",zipfile.ZIP_DEFLATED)   # 创建一个 zipfile 对象

zf.write("/bin/cat","cat")  # 把文件写入到压缩文件中

zf.write("/bin/ls","ls")

zf.close()  # 关闭文件

 

3.2 解压文件

zf = zipfile.ZipFile("ceshi1.zip","r")

zf.extract("ls","ls")  # 解压单个文件

zf.extractall("ceshi1")  #解压所有文件到文件夹 ceshi1 中

 

3.3 追加文件

zf = zipfile.ZipFile("ceshi1.zip","a")

zf.write("/bin/yum","yum")

 

3.4 查看压缩包中的内容

zf = zipfile.ZipFile("ceshi1.zip","r")

lst = zf.namelist()

print(lst)

文件操作支持 with 语法(自动关闭文件):

with zipfile.ZipFile("ceshi1.zip","a",zipfile.ZIP_DEFLATED) as zf:
    zf.write("/bin/chmod","chmod")

 

 4. 压缩文件 tarfile (后缀为.tar、.tar.gz、.tar.bz2)

4.1 创建压缩包

 创建.tar 压缩包

import tarfile
tf = tarfile.open("ceshi2.tar","w",encoding="utf-8")
# 写入文件到压缩包中
tf.add("rpw.py","rpw.py")
tf.add("t1.py","t1.py")
tf.close()

创建 .tar.gz 压缩包

import tarfile
tf = tarfile.open("ceshi3.tar","w:gz",encoding="utf-8")
# 写入文件到压缩包中
tf.add("rpw.py","rpw.py")
tf.add("t1.py","t1.py")
tf.close()

创建 .tar.bz2 压缩包

import tarfile
tf = tarfile.open("ceshi4.tar","w:bz2",encoding="utf-8")
# 写入文件到压缩包中
tf.add("rpw.py","rpw.py")
tf.add("t1.py","t1.py")
tf.close()

 4.2 解压压缩包

import tarfile
tf = tarfile.open("ceshi1.tar","r")
tf.extract("ls","ceshi1/ls")
tf.extractall("ceshi1")
tf.close()

 

4.3 追加文件

#  tarfile 的追加,只能是只打包不压缩的包进行追加(.tar),其他模式不可以
import tarfile
with tarfile.open("ceshi1.tar","a",encoding="utf-8") as tf:
    tf.add("/bin/yum","yum")

4.4 查看压缩包中的内容

with tarfile.open("ceshi2.tar.gz","r",encoding="utf-8") as tf:
    # 返回一个列表
    lst = tf.getnames()
    print(lst)
posted @ 2019-12-25 20:15  心随我动丶  阅读(397)  评论(0编辑  收藏  举报