Python文件处理-2

序列化和反序列化      

        序列化指的是:将对象转化成“串行化”数据形式,存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程,将读取到的串行化数据转化成对象。

        Python中,一切皆对象,对象本质上就是一个存储数据的内存块。有时候,我们需要将内存块的数据保存到硬盘上,或者通过网络传输到其他计算机上。这时候就需要对象的序列化和反序列化。对象的序列化机制广泛的应用在分布式、并行系统上。

        pickle.dump(obj,file),obj就是要被序列化的对象,file指的是存储的文件

        pickle.load(file),从file读取数据,反序列化成对象

CSV文件操作

        csv是(Comma-Separated Values)逗号分隔文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。

与Excel文件不同,CSV文件中:

  1. 值没有类型,所有值都是字符串
  2. 不能指定字体颜色等样式
  3. 不能指定单元格的宽高,不能合并单元格
  4. 没有多个工作表
  5. 不能嵌入图像图表
csv.reader对象和csv文件读取
import csv

with open(r"csv_demo.csv", encoding="utf-8") as f:
    csv_demo = csv.reader(f)    # 创建csv对象,它是一个包含所有数据的列表,每一行为一个元素
    headers = next(csv_demo)    # 获取列表对象,包含标题行的信息
    print(headers)
    for row in csv_demo:
        print(row)
csv.writer对象和csv文件写入
import csv

headers = ["学号","姓名","年龄","地址"]
rows = [("1001","saber",18,"理想乡"),("1002","archer",19,"冬木市")]

with open(r"b.csv","w") as b:
    b_csv = csv.writer(b)    #创建csv对象
    b_csv.writerow(headers)   #写入一行(标题)
    b_csv.writerows(rows)    #写入多行(数据)
os和os.path模块

        os模块可以帮助我们直接对操作系统进行操作。可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等。

        os.system可以帮助我们直接调用系统命令

# 调用windows系统的记事本程序
import os
os.system("notepad.exe")
# 调用windows系统的ping命令
import os

os.system("ping www.baidu.com")
# 运行微信
import os
os.startfile(r"E:\WeChat\WeChat.exe")

os模块下常用操作文件的方法

方法名描述
remove(path)删除指定的文件
rename(src,dest)重命名文件或目录
stat(path)返回文件的所有属性
listdir(path)返回path目录下的文件和目录列表

 os模块下关于目录操作相关方法

方法名描述
mkdir(path)创建目录
makedirs(path1/path2/path3/...)创建多级目录
rmdir(path)删除目录
removedirs(path1/path2...)删除多级目录
getcwd()返回当前工作目录:current work dir
chdir(path)把path设为当前工作目录
walk()遍历目录树
sep当前操作系统所使用的路径分隔符

 os.path模块提供了目录相关操作

方法描述
isabs(path)判断path是否绝对路径
isdir(path)判断path是否为目录
isfile(path)判断path是否为文件
exists(path)判断指定路径的文件是否存在
getsize(filename)返回文件的大小
abspath(path)返回绝对路径
dirname(p)返回目录的路径
getatime(filename)返回文件的最后访问时间
getmtime(filename)返回文件的最后修改时间
walk(top,func,arg)递归方式遍历目录
join(path,*paths)连接多个path
split(path)对路径进行分割,以列表形式返回
splitext(path)从路径中分割文件的扩展名

# 列出当前文件夹下的所有py文件
import os.path

path = os.getcwd()
file_list = os.listdir(path)    # 列出子目录和子文件
print(file_list)
print("=========================="*3)
for filename in file_list:
    pos = filename.rfind(".")
    if filename[pos+1:]=="py":
        print(filename,end="\t")
print("\n========================================")
file_list2 = [filename for filename in os.listdir(path) if filename.endswith(".py")]
for filename in file_list2:
    print(filename,end="\t")
walk()递归遍历所有文件和目录

        os.walk()方法思一个简单医用的文件、目录遍历器,可以帮助我们高效的处理文件、目录方面的事情。

os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

top:要遍历的目录

topdown:可选,True,先遍历top目录,再遍历子目录

返回三元组(root、dirs、files):

root:当前正在遍历的文件夹本身

dirs:一个列表,该文件夹中所有的目录的名字

files:一个列表,该文件夹中所有的文件的名字

import os

path = os.getcwd()
list_file = os.walk(path,topdown=False)
for root,dirs,files in list_file:
    for name in files:
        print(os.path.join(root,name))
    for name in dirs:
        print(os.path.join(root,name))
shutil模块

         shutil模块是python标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等,还可以做文件和文件夹的压缩、解压缩操作。

        os模块提供了对目录或文件的一般操作。shutil模块作为补充,提供了移动、复制、压缩、解压等操作。

import shutil

shutil.copyfile("a.txt","a_copy.txt")


# 递归拷贝文件夹内容

# D:/B不存在才能用,将b下的所有不是.html和.htm后缀的复制到B下

shutil.copytree("D:/a/b","D:/B",ignore=shutil.ignore_patterns("*.html","*.htm"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值