在Python写代码做项目时,我们往往需要对多个文件进行操作,在现在的源代码文件中怎么导入其他文件?怎么对其他文件进行操作?这都是经常要面临的问题,尤其是爬虫,爬到的数据放在哪里?用到的时候怎么调出来?
这就涉及到了Python的文件操作知识了,我们不可能永远都只会在一个源文件上做所有的操作,这也是必须掌握的一个知识板块。
与此同时,我的Python新手入门教程系列文章也已经快更新完了,欢迎大家的订阅:
计算机中的文件通常是指计算机硬盘为载体的、存储在计算机中的信息集合,主要的表现形式为视频、音频、图片以及文档四类,比如执行性文件.exe、文档文件.txt、网页文件.html等等。
在现实中,我们对文件进行操作可以大致总结为“打开→操作(阅读、删除、修改等)→保存→关闭”,在Python当中依然是如此,在用Python开始文件操作之前,我们先学几个方法。
1.open(name,mode) ----打开文件
这是Python打开文件的方法,用于打开一个文件,返回的是一个文件对象。
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模块是一个用于访问操作系统的模块,在进行文件操作的时候常会用到它。模块在使用之前要进行导入。
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这个模块也是比较常用的文件操作模块。
那么今天的分享就先到这里,看完可以收藏起来多练练,文件操作也就不再困难了。
准备了很久,我的公众号终于是开始运作了,关于我的技术和经验文章都会优先在上面进行推送,目前还在不断完善中,欢迎大家的关注。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/120982.html
上次讲了2个游戏源码 前端实战之js推箱子游戏(有界面、附源码、赞关藏) Python实战:五子棋小游戏,切身感受一下前端和桌面应用的区别,选择自己喜欢的 本来今天准备写一篇面向对象文章,但是想一想,讲面向对象之前还是先给大家介绍几款实用的工具,更加快速的理解,掌握知识点。 1.UML 统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可...
?前言 代码出现异常而报错再正常不过了,但为什么要处理异常? 由于异常的存在,代码运行时会出现一大堆的红色字体提示,对于程序员还好,见红色报错见多了习惯了,但如果你开发出来的东西要给别人看,那么不懂代码的人就会一脸懵逼,对产品的印象都不太好了。 比如我们经常简单网页丢失的情况,其实是就是网页代码执行时发生了异常,但有的网页还是很个性的,提示的信息可能是比较人性化的,比如CSDN你收藏的文章被后台删...
前言 最近,我在群里答疑的时候,经常碰到,小伙伴,再变量,缩进,参数,方面使用错误,导致程序运行不来。 今天,打算自己写一篇。 Python 变量作用域,和生命周期。 彻底弄懂变量该怎么使用。 知识点 变量的使用,有作用域区别,也有生命周期的区别。 1.变量作用域 局部变量 python能够影响变量作用域的代码段是def、class、lamda。 def scopeTest(): local...
摘要:标签不区分大小写,但推荐小写。标签可以嵌套,但不能交叉嵌套。标签也称为元素。比如行内标签亦可成行内元素。 ❤️HTML必备知识详解❤️ 第一部分:HTML框架简介...
摘要:前言在开发技术和应用市场完全成熟的今天,有人希望深耕技术打造出自己的一片天地,也有人想广泛学习在程序员市场中游刃有余。而这本书上千的引用论文,给我指明了一条系统学习理论的明路。 ...
阅读 3581·2021-09-24 09:48
阅读 1105·2021-09-10 10:51
阅读 3284·2019-08-30 13:03
阅读 3332·2019-08-30 12:51
阅读 1400·2019-08-30 11:22
阅读 1074·2019-08-29 18:38
阅读 2046·2019-08-29 16:41
阅读 3218·2019-08-29 15:32