前言
学无止境,无止境学。大家好,我是张大鹏,之前在抖音有5万多粉丝,不过现在不拍视频,专心写公众号了。笔者目前是高级Python工程师,之前是全栈工程师,主要擅长Golang和Python开发,对于Java,Vue,React也有一些研究。工作之余,喜欢学习和分享,希望能够通过此公众号”张大鹏520″,将自己学到的东西分享给大家,和大家一起交流,一起成长,一起进步。
今天要给大家分享的是《Python零基础入门教程08 文件操作》,这是一个系列的教程,从零基础到项目实战。在本教程中,我会给大家介绍Python中常用的文件操作。读写文件,复制文件,删除文件,删除目录等。还会配套相关的练习,大家学完以后可以自行通过练习题巩固和加深对知识点的理解。
如果大家需要本教程的PDF电子书或者完整的源码,可以在文末找到获取方式哈。
01 文件的读写
写入文件
在Python中,要写入文件,一般需要打开文件,写入数据,关闭文件这三个步骤,常用方法如下:
-
f = open(文件路径,访问模式)
:打开指定路径的文件 -
f.write(字符串)
:向文件中写入指定字符串的内容 -
f.close()
:关闭文件
示例代码:
# 1. 打开 open()
f = open('./test.txt', 'w')
# 2. 读写操作 write() read()
f.write('aaan')
f.write('bbbn')
f.write('cccn')
# 3. 关闭 close()
f.close()
文件的方式模式
文件的访问模式除了写入,还有读取和追加。常见的文件访问模式如下:
-
r
:读取文件 -
w
:写入文件 -
a
:追加文件内容
示例代码:
file_path = "test.txt"
# `r`:读取文件
f = open(file_path, "r")
print(f.read())
f.close()
# `w`:写入文件
f = open(file_path, "w")
f.write("hello file!n")
f.close()
# `a`:追加文件内容
f = open(file_path, "a")
f.write("I'm ZhangDapeng.n")
f.close()
读取所有行
使用方法f.readlines()
可以一次性读取文件的所有行,返回一个列表。
示例代码:生成10个包含姓名,年龄,性别的用户数据,写入文件,然后读取该文件的所有行,遍历每行输出。
import zdppy_random
file_path = "test.txt"
# 准备数据
f = open(file_path, "w", encoding="utf8")
for _ in range(10):
f.write(f"{zdppy_random.random_name()},{zdppy_random.random_int(0, 120)},{zdppy_random.random_gender()}n")
f.close()
# 读取所有行
f = open(file_path, "r", encoding="utf8")
lines = f.readlines()
[print(line, end="") for line in lines]
f.close()
读取单行
使用方法f.readline()
可以读取文件的每一行,这种读取方法比较麻烦,要读取完所有内容,需要使用循环。
示例代码:生成10个包含姓名,年龄,性别的用户数据,写入文件,然后读取该文件的所有行,遍历每行输出。
import zdppy_random
file_path = "test.txt"
# 准备数据
f = open(file_path, "w", encoding="utf8")
for _ in range(10):
f.write(f"{zdppy_random.random_name()},{zdppy_random.random_int(0, 120)},{zdppy_random.random_gender()}n")
f.close()
# 读取所有行
f = open(file_path, "r", encoding="utf8")
while True:
line = f.readline()
if line:
print(line, end="")
else:
break
f.close()
输出结果:
毋良翰,41,男
荀文山,95,女
裘锐阵,108,女
乜翰飞,12,女
匡文光,97,女
缑亢坚白,119,女
杜雨星,107,女
闾丘昂然,8,男
瞿俊楚,79,女
蔡英锐,39,女
02 文件的高级操作
文件的备份
文件备份的原理实际上非常简单,就是将原本文件的内容读取出来,然后写入到一个新的文件即可,基本执行流程如下:
-
1、读取源文件 -
2、写入新文件
示例代码:文件备份
import zdppy_random
file_path = "test.txt"
# 准备数据
f = open(file_path, "w", encoding="utf8")
for _ in range(10):
f.write(f"{zdppy_random.random_name()},{zdppy_random.random_int(0, 120)},{zdppy_random.random_gender()}n")
f.close()
# 读取文件
# 一种可以自动关闭文件的写法,可以省略掉close()
with open(file_path, "r", encoding="utf8") as f:
# 写入文件
with open(file_path + ".back", "w", encoding="utf8") as ff:
ff.write(f.read())
文件和文件夹操作
Python内置了很多方法方便我们去操作文件和文件夹,常见的如下:
-
os.rename(旧名字,新名字)
:重命名文件名,也可以重命名文件夹名 -
os.remove(文件路径)
:删除文件 -
os.mkdir(文件夹名)
:创建新的文件夹 -
os.rmdir(文件夹名)
:删除空的文件夹,注意,只能删除空文件夹 -
os.getcwd()
:获取当前文件所在的目录路径,是一个绝对路径 -
os.chdir(目录路径)
:切换目录路径 -
os.listdir(目录路径)
:获取指定目录下的所有文件路径,包括子文件夹路径
为了便于案例的学习,我们设计的虚拟的需求如下:
-
1、创建文件夹test -
2、进入文件夹test -
3、创建文件test.txt和test2.txt -
4、将test.txt改名为test1.txt -
5、删除文件test1.txt -
6、切换到父级目录 -
7、查看test目录下的所有文件 -
8、删除test目录下的test2.txt文件 -
9、查看当前路径 -
10、重命名test目录为test1目录 -
11、删除test1目录
示例代码:
import os
import time
# 1、创建文件夹test
os.mkdir("test")
time.sleep(1)
# 2、进入文件夹test
os.chdir("test")
print(os.getcwd())
time.sleep(1)
# 3、创建文件test.txt和test2.txt
with open("test.txt", "w") as f:
f.write("aaa")
with open("test2.txt", "w") as f:
f.write("bbb")
print(os.listdir())
time.sleep(1)
# 4、将test.txt改名为test1.txt
os.rename("test.txt", "test1.txt")
print(os.listdir())
time.sleep(1)
# 5、删除文件test1.txt
os.remove("test1.txt")
print(os.listdir())
time.sleep(1)
# 6、切换到父级目录
os.chdir("..")
# 7、查看test目录下的所有文件
print(os.listdir("test"))
time.sleep(1)
# 8、删除test目录下的test2.txt文件
os.remove("test/test2.txt")
# 9、查看当前路径
print(os.getcwd())
# 10、重命名test目录为test1目录
os.rename("test", "test1")
time.sleep(1)
# 11、删除test1目录
os.rmdir("test1")
time.sleep(1)
输出结果如下:
D:studystudy_pythonz01_video_studyz01_HM_AI_2022z01_basicz08_文件操作practice01test
['test.txt', 'test2.txt']
['test1.txt', 'test2.txt']
['test2.txt']
['test2.txt']
D:studystudy_pythonz01_video_studyz01_HM_AI_2022z01_basicz08_文件操作practice01
批量删除
需求:删除当前文件夹下以test
开头的文件。
示例代码:
import os
for f in os.listdir():
if f.startswith("test"):
print(f, type(f))
os.remove(f)
输出结果:
test.txt <class 'str'>
test.txt.back <class 'str'>
结语
关注我不迷路,欢迎关注我的微信公众号”张大鹏520″,如果您对此文章感兴趣,欢迎点赞收藏,留言评论。
文中所有代码,只需要打赏20元,然后留言评论“已打赏”,即可获取哦。
本文的PDF电子书版,只需要打赏3元,然后留言评论“已打赏”,即可获取哦。
写文章不容易,不喜勿喷哈,如果有想要学编程,学项目,或者在工作中有项目难以单独完成需要提供帮助的同学,欢迎私信我哈。生活不易,想要利用学到的编程知识,业余赚点零花钱。
接项目:网站开发,APP开发,各种管理系统开发。
带徒弟:Python编程教学,Golang编程教学,前端编程教学。
谢谢您!!!
原文始发于微信公众号(张大鹏520):Python零基础入门教程08 文件操作
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/48529.html