😏前言
在Python写代码做项目时,我们往往需要对多个文件进行操作,在现在的源代码文件中怎么导入其他文件?怎么对其他文件进行操作?这都是经常要面临的问题,尤其是爬虫,爬到的数据放在哪里?用到的时候怎么调出来?
这就涉及到了Python的文件操作知识了,我们不可能永远都只会在一个源文件上做所有的操作,这也是必须掌握的一个知识板块。
与此同时,我的Python新手入门教程系列文章也已经快更新完了,欢迎大家的订阅:
Python新手入门教程系列文章专栏
文章目录
- 😏前言
- 💼一、文件的定义和操作
- 💼二、文件的基本操作
- 💼三、文件的方法与属性
- 💼四、os模块
- 🎓结语
💼一、文件的定义和操作
计算机中的文件通常是指计算机硬盘为载体的、存储在计算机中的信息集合,主要的表现形式为视频、音频、图片以及文档四类,比如执行性文件.exe、文档文件.txt、网页文件.html等等。
💼二、文件的基本操作
在现实中,我们对文件进行操作可以大致总结为“打开→操作(阅读、删除、修改等)→保存→关闭”,在Python当中依然是如此,在用Python开始文件操作之前,我们先学几个方法。
1.open(name,mode) —-打开文件
这是Python打201cf开文件的方法,用于打开一个文件,返回的是一个文件对象。
name指的是文件名,一定要写全,何为写全?就是要写清楚 存储路径+文件名+后缀 。
为何要写这么全?因为就算是相同的存储路径下,文件名相同的文件也可能不止一个,只要后缀不一样,计算机是允许存在同名文件,所以不写全的话,计算机是不知道你指的是谁
mode是打开文件的模式,默认是r,也就是只读的方式。mode的方式有很多,比如读、写等等,后面我们会讲到。
2.write(“内容") ——写
顾名思义,就是向文件对象中写入内容。
3.read() ——-读
向文件中写入内容,括号里面可以写数字也可以不写,不写的话默认是读取全部内容,写数字则表示读取X个字符,比如说read(6)则读取文件对象的6个字符。
4.close() ——关闭文件
关闭文件的方法,如果你在进行文件操作之后不进行关闭文件,则文件一直处于打开和操作的状态,会占用内存。
5.案例
在了解了这4个基本方法之后,我们来开始做1个小案例:新建一个项目,然后新建一个名为“文件”的Python文件用于写代码,然后我们用写的方式向1个叫“文件1”的.txt文件写入“hello world”,代码如下:
f = open("文件一.txt",'w') #以写入的方式,打开文件f.write("hello world") #向文件一中写入内容f.close() #关闭文件
前面讲过 open() 这个方法返回的是一个文件对象,所以我们用f进行接收一下,这是没有运行前的界面:
运行后:
运行后生成了一个新的名为“文件一.txt”文件,打开它之后就能看到我们输入的内容。进行写操作时,如果文件不存在,则默认会创建一个。
同样的,我们也可以对这个文件进行读的操作:
f = open("文件一.txt",'r') #以写入的方式,打开文件print(f.read()) #读文件f.close() #关闭文件
运行结果:
hello world
这就是一个最基本的文件操作流程。
在这里要注意一点,open(name,mode)在一开始写的时候,mode就已经决定了你能做什么操作,也就是说如果你在开始写代码的时候写的是:
f = open("文件一.txt",'r') #只读的方式打开文件
那么后面你想进行write()的写操作是会报错的,因为mode里面声明了r只读模式,所以你没有写的权限,这一点要注意一下。
6.mode的其他操作模式
mode中有很多的操作模式,我们以表格的方式来看看:
模式 | 描述 |
---|---|
r | 以只读的形式打开文件,文件的指针在开头 |
r+ | 读写,文件指针在开头 |
rb | 以二进制的形式,只读文件指针在开头 |
w | 只写,文件不存在,则创建新的,存在则覆盖,指针在开头 |
w+ | 读写,文件不存在,则创建新的,存在则覆盖,指针在开头 |
wb | 只写,以二进制的形式 |
a | 追加模式,文件指针在结尾 |
a+ | 读写,不存在则创建,存在直接追加 |
ab | 以二进制形式追加 |
指针在这里可以理解为光标,它在哪里,你的操作就从哪里开始。
举例:新建1个名为 “test” 的.txt文件,第一次向里面写入aaa,第二次向里面写入bbb。
f = open("test.txt", 'a+')f.write("aaa")f.close()f = open("test.txt") # 默认只读模式print(f.read()) # 打印内容f = open("test.txt", 'a+')f.write("bbb")f.close()f = open("test.txt") # 默认只读模式print(f.read()) # 再次打印内容
运行结果:
aaaaaabbb
💼三、文件的方法与属性
1.file的对象属性
有三个常用的方法可用于查看文件对象的属性:
1. closed如果文件对象已关闭,返回True,否则返回False2. mode返回文件对象的访问模式3. name返回文件的名称
案例:对文件进行操作(随意),查看被操作的文件名、操作模式和是否关闭。
f = open("test.txt", 'a+')f.write("aaa")f.close()print(f.closed) #查看是否关闭print(f.name) #查看文件名字print(f.mode) #查看操作模式
运行结果:
Truetest.txta+
2.file的对象方法
文件的方法有很多,前面我们已经讲过一点,比如read()和write(),但还有一些常用的方法需要掌握的,比如下面的:
1. close()关闭文件---非常重要2. read([count])读取文件中的内容count:字节数量3. readlines()读取所有内容,打包成列表4. readline()读取一行数据,追加读取,读取过的不能再次读取5. seek(offset,[from])修改指针的位置:从from位置移动了offset个字节from:0则表示从起始位置,1则表示从当前位置开始,2则表示从末尾开始oofset:要移动的字节数6. write()向文件中写入内容
举例:向test.txt文件中写入aaabbbccc,将文件中的内容输出为列表。
f = open("test.txt", 'a+')f.write("aaabbbccc")f.close()f = open("test.txt")print(f.readlines())f.close()
运行结果:
['aaabbbcccaaabbbccc']
💼四、os模块
os模块是一个用于访问操作系统的模块,在进行文件操作的时候常会用到它。模块在使用之前要进行导入。
import os
1.关于文件的功能
1.os.rename(原文件名,新的文件名) ——文件重命名2.os.remove(文件名) ——删除文件如果不说明路径,则在源代码所在文件夹下寻找,寻找不到会报错。若想删除指定文件夹下的文件,文件名则需要具体路径,例如 os.remove(r"D:\\test_1\\文件名"),r防止斜杠发生转义
举例:已有文件test1.txt,将其修改成test20.txt。
import osos.rename("test1.txt","test20.txt")
运行结果:
2.文件夹的功能
1.os.mkdir(文件夹名) ——创建文件夹2.os.rmdir(文件夹名) ——删除文件夹3.os.getced() ——获取当前目录4.os.chdir(目录) ——切换目录5.os.listdir(目录) ——获取当前文件夹下所有的文件或者文件夹,返回一个列表os.listdir("aa") #获取aa文件夹下的所有文件或文件夹,返回一个列表
举例:在现有文件夹venv里面新建一个新建文件夹。
import osos.chdir(r"D:\\文件\\venv") #切换到venv文件夹下,r是防止转义os.mkdir("新建文件夹") #在venv文件夹下创建一个新建文件夹print(os.getcwd()) #输出当前目录位置
运行结果:
🎓结语
关于文件其实还有很多的方法,用到的时候可以去网上查查资料去深入了解,比如说os模块里面还有其他的方法,我们可以ctrl+鼠标左键进入模块内部查看,比如说不止os模块,还有os.path这个模块也是比较常用的文件操作模块。
那么今天的分享就先到这里,看完可以收藏起来多练练,文件操作也就不再困难了。
准备了很久,我的公众号终于是开始运作了,关于我的技术和经验文章都会优先在上面进行推送,目前还在不断完善中,欢迎大家的关注。