韩顺平 | 零基础快速学Python(16) 文件处理

2024-04-16 02:28

本文主要是介绍韩顺平 | 零基础快速学Python(16) 文件处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文件

输入与输出

输入:数据从数据源(文件)到程序(内存);
输出:数据从程序(内存)到数据源(文件)。

输出/写文件
输入/读文件
py程序(加载到内存)
文件(存放于磁盘)

I/O类型

Python用于处理各种I/O类型(Input/Output 类型),主要的I/O类型分别为:文件I/O,二进制I/O,对应处理的文件对象类别:文件文本、二进制文件
文件文本:通常是记事本可以直接打开的 .py .txt;
二进制文件:图片、音频、视频等。
不同类型文件需要用对应方式打开。

文件编码

文件编码/字符编码:规定了如何将内容翻译成二进制,以及如何将二进制翻译成可识别的内容。
常见编码:UTF-8(使用最多)、GBK、BIG5、GB2312、ANSI国标码(根据系统,中文简体对应GBK)
查看编码函数:hex(ord("字符")) 16进制转为10进制
编码转换工具

常见的文件操作

open(file, mode='r', encoding=None)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

创建文件

创建文件,以mode=“w”-写入形式打开文件,如果文件不存在,系统会自动创建。encoding不能少,因为和参数位置不对应,无法按参数位置传递。

f1 = open("d://a/hi.txt:", "w", encoding="utf-8)" #前提是目录存在
print(f"文件创建成功类型是:{type(f1)}") #<class '_io.TextIOWrapper'>

读文件

读取文件:mode=“r”-读取(默认)

 f = open("d://a/hi.txt:", "r", encoding="utf-8)# 读取方式1:read()content = f.read() # 一次返回整个文件的内容#content = f.read(6) #读取6个字符print(content)# 读取方式2:readline() 字符串末尾保留换行符\n
while True:line_content = f.readline # 循环读取整个文件 一行行读if line_content == "": #读取完毕breakprint(line_content, end="") #print不输出换行 # 读取方式3:readlines() 列表形式读取文件中所有行
lines = f.readlines()
for line in lines:print(line, end="")
print(lines) #["line1\n", "line2\n"...]# 读取方式4:直接遍历打开文件获取的文件对象
for line in f:print(line, end="")# 关闭文件,释放文件占用的系统资源
f.close() 

写文件

创建文件,以mode=“w”-写入形式打开文件,如果文件不存在,系统会自动创建;如果文件已存在,会先截断打开的文件,也就是清空文件内容(!!!)
· mode=“a”:追加写入

f1 = open("d://a/hi.txt:", "w", encoding="utf-8)" #前提是目录存在
i = 1
while i <= 10:f.write(f"hello, world!\n"))i += 1
f.close()

删除文件

import os
if os.path.exists("d://a/abc.txt") #判断指定路径文件是否存在os.remove("d://a/abc.txt") #如果存在,删除文件
else:print("不存在")

对目录的操作

import osif os.path.isdir("d://aaa") #判断目录是否存在print("已存在")
else:os.mkdir("d://aaa") # 创建单级目录if os.path.isdir("d://bbb//ccc")print("已存在")
else:os.makedirs("d://bbb//ccc") #递归创建多级目录if os.path.isdir("d://aaa") os.rmdir("d://aaa") # 删除单级目录
else:print("不存在")if os.path.isdir("d://bbb//ccc")os.removedirs("d://bbb//ccc") #删除多级目录
else:print("不存在")

获取文件的相关信息

import os
import time
#time.ctime() # 将返回的时间戳转为字符串格式
f_stat = os.stat("d:/python/hello.py") # 获取文件或文件描述符的状态,返回一个stst_result对象
print(f"文件大小->{time.ctime(f_stat.st_atime)} \n"f"最近访问时间->{time.ctime(f_stat.st_atime)} \n"f"最近修改时间->{time.ctime(f_stat.st_mtime)} \n"f"文件创建时间->{time.ctime(f_stat.st_ctime)} \n")

f.flush():刷新流的写入缓冲区到文件。
调用f.write()内容先积攒到缓存区,刷新后才真正写入文件,避免频繁操作硬盘,导致低效率
f.close:刷新并关闭流。
with open() as f:在处理文件对象时,子句体结束后,文件会自动关闭

with open("d://a//hello.txt", "r", encoding="UTF-8") as f:lines = f.readlines()for line in lines:print(line, end="")
print("\n文件是否关闭->", f.closed) #true

关于目录分隔符号:为兼容,推荐/
windows:/ //
linux/unix: /

应用实例

拷贝文件

使用原生方法 read() write()读取
1 打开源文件,读取文件的数据
2 打开目标文件,把读取的文件数据写入
3 注意:若二进制文件需以二进制方式打开

f_src_path = "C:/srcpath/pig.jpg"
f_dst_path = "d:/dstpath/pig.jpg"# 方式1
f_src = open(f_src_path, "rb") #r读取 b二进制文件 编码默认和系统保持一致
data = f_src.read()
f_dst = open(f_src_path, "wb")
f_dst.write(data)
f_src.close()
f_dst.close()#方式2 with子句方式完成文件拷贝 读一行写一行(文件大,减轻内存压力)
with open (f_src_path, "rb") as f_src:with open (f_dst_path, "wb") as f_dst:for data in f_src:f_dst.write(data)

遍历目录

判断是目录还是文件
1 获取文件夹(目录)所有内容(元素),所有文件和目录
2 判断是目录还是文件
3 化繁为简:先考虑单级目录,再考虑多级目录
3.1 如果是目录,输出信息再递归处理
3.2 如果是文件,输出对应信息即可

import os
dir_path = "d:/a"# 判断单级目录
content_list = os.listdir(dir_path) #列表形式返回目录内所有内容
print("content_list:", content_list)
for ele in content_list:child_ele = dir_path + "/" + eleif os.path.isdir(child_ele):print(f"目录:{child_ele}")else:print(f"文件:{child_ele}")# 递归遍历多级目录
def print_dir_all_content(dir_path):content_list = os.listdir(dir_path) for ele in content_list:child_ele = dir_path + "/" + eleif os.path.isdir(child_ele):print(f"目录:{child_ele}")print_dir_all_content(chile_ele) #递归操作else:print(f"文件:{child_ele}")

这篇关于韩顺平 | 零基础快速学Python(16) 文件处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907570

相关文章

Python脚本实现自动删除C盘临时文件夹

《Python脚本实现自动删除C盘临时文件夹》在日常使用电脑的过程中,临时文件夹往往会积累大量的无用数据,占用宝贵的磁盘空间,下面我们就来看看Python如何通过脚本实现自动删除C盘临时文件夹吧... 目录一、准备工作二、python脚本编写三、脚本解析四、运行脚本五、案例演示六、注意事项七、总结在日常使用

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

python管理工具之conda安装部署及使用详解

《python管理工具之conda安装部署及使用详解》这篇文章详细介绍了如何安装和使用conda来管理Python环境,它涵盖了从安装部署、镜像源配置到具体的conda使用方法,包括创建、激活、安装包... 目录pytpshheraerUhon管理工具:conda部署+使用一、安装部署1、 下载2、 安装3

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

使用Python实现在Word中添加或删除超链接

《使用Python实现在Word中添加或删除超链接》在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能,本文将为大家介绍一下Python如何实现在Word中添加或... 在Word文档中,超链接是一种将文本或图像连接到其他文档、网页或同一文档中不同部分的功能。通过添加超

Python MySQL如何通过Binlog获取变更记录恢复数据

《PythonMySQL如何通过Binlog获取变更记录恢复数据》本文介绍了如何使用Python和pymysqlreplication库通过MySQL的二进制日志(Binlog)获取数据库的变更记录... 目录python mysql通过Binlog获取变更记录恢复数据1.安装pymysqlreplicat

利用Python编写一个简单的聊天机器人

《利用Python编写一个简单的聊天机器人》这篇文章主要为大家详细介绍了如何利用Python编写一个简单的聊天机器人,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 使用 python 编写一个简单的聊天机器人可以从最基础的逻辑开始,然后逐步加入更复杂的功能。这里我们将先实现一个简单的

基于Python开发电脑定时关机工具

《基于Python开发电脑定时关机工具》这篇文章主要为大家详细介绍了如何基于Python开发一个电脑定时关机工具,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 简介2. 运行效果3. 相关源码1. 简介这个程序就像一个“忠实的管家”,帮你按时关掉电脑,而且全程不需要你多做

Python实现高效地读写大型文件

《Python实现高效地读写大型文件》Python如何读写的是大型文件,有没有什么方法来提高效率呢,这篇文章就来和大家聊聊如何在Python中高效地读写大型文件,需要的可以了解下... 目录一、逐行读取大型文件二、分块读取大型文件三、使用 mmap 模块进行内存映射文件操作(适用于大文件)四、使用 pand

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一