【博学谷学习记录】超强总结,用心分享|人工智能第八课Python中文件操作

一、文件的概念

1、什么是文件

内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。

一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。

2、文件操作

我们对文件的主要操作:创建文件、打开文件、文件读写、文件备份等等

3、文件操作的作用

文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。

二、文件的基本操作

1、文件操作三步走

① 打开文件

② 读写文件

③ 关闭文件

2、open函数打开文件

在Python,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:

f = open(name, mode)
注:返回的结果是一个file文件对象(后续会学习,只需要记住,后续方法都是f.方法())

name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。

mode:设置打开文件的模式(访问模式):只读r、写入w、追加a等。

r模式:代表以只读模式打开一个已存在的文件,后续我们对这个文件只能进行读取操作。如果文件不存在,则直接报错。另外,r模式在打开文件时,会将光标放在文件的第一行(开始位置)。

w模式:代表以只写模式打开一个文件,文件不存在,则自动创建该文件。w模式主要是针对文件写入而定义的模式。但是,要特别注意,w模式在写入时,光标也是置于第一行同时还会清空原有文件内容。

a模式:代表以追加模式打开一个文件,文件不存在,则自动创建该文件。a模式主要也是针对文件写入而定义模式。但是和w模式有所不同,a模式不会清空文件的原有内容,而是在文件的尾部追加内容。

文件路径:① 绝对路径 ② 相对路径

① 绝对路径:绝对路径表示绝对概念,一般都是从盘符开始,然后一级一级向下查找(不能越级),直到找到我们要访问的文件即可。

比如访问C盘路径下的Python文件夹下面的python.txt文件,其完整路径:

Windows
C:\Python\python.txt
Linux
/usr/local/nginx/conf/nginx.conf

绝对路径一般路径固定了,文件就不能进行移动,另外在迁移过程中会比较麻烦。

② 相对路径:相对路径表示相对概念,不需要从盘符开始,首先需要找到一个参考点(就是Python文件本身)

同级关系:我们要访问的文件与Python代码处于同一个目录,平行关系,同级关系的访问可以使用./文件名称或者直接写文件名称即可

上级关系:如果我们要访问的文件在当前Python代码的上一级目录,则我们可以通过../来访问上一级路径。如果是多级,也可以通过../../../去一层一层向上访问

下级关系:如果我们要访问的文件在与Python代码同级的某个文件夹中,则我们可以通过文件夹名称/来访问某个目录下的文件

3、write函数写入文件

基本语法:

f.write('要写入的内容,要求是一个字符串类型的数据')

4、close函数关闭文件

f.close()

5、入门级案例

# 1、打开文件
f = open('python.txt', 'w')
# 2、写入内容
f.write('人生苦短,我学Python!')
# 3、关闭文件
f.close()

强调一下:中文乱码问题,默认情况下,计算机常用编码ASCII、GBK、UTF-8

6、解决写入中文乱码问题

# 1、打开文件
f = open('python.txt', 'w', encoding='utf-8')
# 2、写入内容
f.write('人生苦短,我学Python!')
# 3、关闭文件
f.close()

7、文件的读取操作

read(size)方法:主要用于文本类型或者二进制文件(图片、音频、视频...)数据的读取

size表示要从文件中读取的数据的长度(单位是字符/字节),如果没有传入size,那么就表示读取文件中所有的数据。

f.read()  # 读取文件的所有内容
f.read(1024)  # 读取1024个字符长度文件内容,字母或数字
# 1、打开文件
f = open('python.txt', 'r', encoding='utf-8')
# 2、使用read()方法读取文件所有内容
contents = f.read()
print(contents)
# 3、关闭文件
f.close()

readlines()方法:主要用于文本类型数据的读取

readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

# 1、打开文件
f = open('python.txt', 'r', encoding='utf-8')
# 2、读取文件
lines = f.readlines()
for line in lines:
    print(line, end='')
# 3、关闭文件
f.close()

8、文件操作的mode模式

模式描述
r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+打开一个文件用于读写。文件指针将会放在文件的开头。
rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

虽然mode文件操作模式很多,但是我们只需要记住3个字符即可。r、w、a

r+、w+、a+,代加号,功能全,既能读,又能写(区别在于指针到底指向不同)

rb、wb、ab,代b的字符,代表以二进制的形式对其进行操作,适合读取文本或二进制格式文件,如图片、音频、视频等格式

rb+、wb+、ab+,代加号,功能全,既能读,又能写(区别在于指针到底指向不同)

9、seek函数移动光标

无论是文件读操作,还是写操作。其起始位置都是文件光标决定的。

r => 文件头

w => 清空文件内容,指向文件头

a => 文件尾

光标在刚打开文件时,默认情况下是根据r、w、a模式相关固定的。但是我们可以通过某些方法,人为移动光标。可以通过seek方法实现。

f.seek(offset,whence=0)
​
offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

实际工作中,seek主要用于重置光标到起始位置。

f.seek(0)
或
f.seek(0, 0)

三、文件和文件夹操作

1、os模块

在Python中文件和文件夹的操作要借助os模块里面的相关功能,具体步骤如下:

第一步:导入os模块

import os

第二步:调用os模块中的相关方法

os.函数名()

2、与文件操作相关方法

编号函数功能
1os.rename(旧文件名称,新文件名称)对文件进行重命名操作
2os.remove(要删除文件名称)对文件进行删除操作

3、与文件夹操作相关操作

前提:

import os

相关方法:

编号函数功能
1os.mkdir(新文件夹名称)创建一个指定名称的文件夹
2os.getcwd()current work directory,获取当前目录名称
3os.chdir(切换后目录名称)change directory,切换目录
4os.listdir(目标目录)获取指定目录下的文件信息,返回列表
5os.rmdir(目标目录)用于删除一个指定名称的"空"文件夹

4、文件夹删除补充(递归删除、慎重!)

# 导入shutil模块
import shutil

# 递归删除非空目录
shutil.rmtree('要删除文件夹路径')

递归删除文件夹的原理:理论上,其在删除过程中,如果文件夹非空,则自动切换到文件夹的内部,然后把其内部的文件,一个一个删除,当所有文件删除完毕后,返回到上一级目录,删除文件夹本身。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值