文件:
内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。
像移动硬盘,内存卡,网盘等等。
一篇文章、一段视频、一个可执行程序,都可以被保存为一个文件,并赋予一个文件名。操作系统以文件为单位管理磁盘中的数据。一般来说,文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等多种类别。
思考:文件操作包含哪些内容呢?
在日常操作中,对文件的主要操作:创建文件、打开文件、文件读写、文件备份等等
读写----一行行读,一行行写,有步骤的----最常用的。
文件操作的作用
文件操作的作用就是把一些内容(数据)存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力。
文件的基本操作
1、文件操作三步走
① 打开文件
② 读写文件
③ 关闭文件
注意:可以只是打开,关闭,不读不写。
2、open函数打开文件
在Python,使用open()函数,可以打开一个已经存在的文件,或者创建一个新文件,语法如下:
open 英 /ˈəʊpən/ v. 开,打开;开封,开启;
f = open(name, mode) # name 就是要打开/创建 的文件名
注:返回的结果是一个file文件对象(后续会学习,只需要记住,后续方法都是f.方法())
name:是要打开的目标文件名的 字符串 (可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读r、写入w、追加a等。
name 英 /neɪm/ n. 名字,名称;
mode 英 /məʊd/ n. 方式,做法,模(式)
> r模式:就是read ----读。。代表以只读模式打开一个已存在的文件,后续我们对这个文件只能进行读取操作。如果文件不存在,则直接报错。另外,r模式在打开文件时,会将光标放在文件的一行。 > w模式:就是write ----写。。代表以只写模式打开一个文件,文件不存在,则自动创建该文件。w模式主要是针对文件写入而定义的模式。但是,要特别注意,w模式在写入时,光标也是置于第一行同时还会清空原有文件内容。 > a模式:就是append----追加。。代表以追加模式打开一个文件,文件不存在,则自动创建该文件。a模式主要也是针对文件写入而定义模式。但是和w模式有所不同,a模式不会清空文件的原有内容,而是在文件的尾部追加内容。
3.write函数写入文件
write 英 /raɪt/ v. 写作,编写;写道;写信;书写,写字;谱写(音乐作品);编写(计算机程序);将(计算机中的)数据写入(磁盘或其他储存媒体);
基本语法:
f.write('要写入的内容,要求是一个字符串类型的数据')
4.close函数关闭文件
f.close() # 后面没有其他的
入门级案例
# 1、打开文件
f = open('python.txt', 'w')
# 2、写入内容
f.write('人生苦短,我学Python!')
# 3、关闭文件
f.close()
执行后,不会输出内容,但是会自动生成文件。文件中有写入write的文字内容。
注意:中文乱码问题,默认情况下,计算机常用编码ASCII、GBK、UTF-8
解决写入中文乱码问题
# 1、打开文件
f = open('python.txt', 'w', encoding='utf-8')
# 2、写入内容
f.write('人生苦短,我学Python!')
# 3、关闭文件
f.close()
文件的读取操作
read(size)方法
:主要用于文本类型或者二进制文件(图片、音频、视频...)数据的读取
size表示要从文件中读取的数据的长度(单位是字节),如果没有传入size,那么就表示读取文件中所有的数据。
size 英 /saɪz/ n. 大小,尺寸;庞大,巨大;
f.read() # 读取文件的所有内容 f.read(1024) # 读取1024个字节长度文件内容,字母或数字,一个占1个字节长度。中文utf-8占3个字节长度。
# 1、打开文件---encoding='utf-8' 解决写入中文乱码问题,如果utf-8不可以,换 gbk试试 f = open('python.txt', 'r', encoding='utf-8') # 2、使用read()方法读取文件所有内容 contents 内容 contents = f.read() # f.read() 读取文件的所有内容 print(contents) # 3、关闭文件 f.close()
readlines()方法
:主要用于文本类型数据的读取
readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。
# 1、打开文件
f = open('python.txt', 'r', encoding='gbk')
# 2、读取文件
lines = f.readlines() # 这里的lines是一个列表
print(lines) # 这里打印输出的lines是一个列表 包含隐藏的 \n 换行
# 3、关闭文件
f.close()
注意:上面输出打印的是列表,是一整行的,不和文件里的一样是两行----所以可以用for循环遍历输出。
相关链接:Python-----for循环基本语法及其应用---对序列进行遍历循环--内部会自动更新计数器(类似while循环里面的 i += 1)_python编程for循环计数器-CSDN博客
# 1、打开文件
f = open('python.txt', 'r', encoding='gbk')
# 2、读取文件
lines = f.readlines()
for line in lines: # 进行for循环遍历,换行输出.line 可以随意设置名称。
print(line)
# 3、关闭文件
f.close()
循环遍历两次,相当于输出两次\n,就会有空行。
取消空行:end = ‘’ 就是不换行的意思
# 1、打开文件 f = open('python.txt', 'r', encoding='gbk') # 2、读取文件 lines = f.readlines() for line in lines: # 进行for循环遍历,换行输出.line 可以随意设置名称。 print(line, end='') # 3、关闭文件 f.close()
文件操作的mode模式
模式 | 描述 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式,不会创建新文件。。----只能读已存在文件,否则报错,如:FileNotFoundError: [Errno 2] No such file or directory: 'pyth1on.txt'。 |
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+,代加号,功能全,既能读,又能写(区别在于指针到底指向不同)、
总结, r w 都是指针指向开头,a 是指针指向末尾。这些是专门读取文本的。
r w a 和 b 组合,就是可以打开图片、音频、视频等格式
关于写入
使用 r+ ,写入-------根据指针,以及替换的字符长度,输出最新结果。
# 1、打开文件---r+ 打开一个文件用于读写。文件指针将会放在文件的开头。不会创建新文件。 f = open('python.txt', 'r+', encoding='utf-8') # 2、读取文件----'r+',配合 write,会把文件原本开头的内容,替换掉。进行覆盖 f.write('5555') # 注意,这个是4个 5,原本的你好,相当于4个字符。 # 3、关闭文件 f.close()
# 1、打开文件---r+ 打开一个文件用于读写。文件指针将会放在文件的开头。不会创建新文件。
f = open('python.txt', 'r+', encoding='utf-8')
# 2、读取文件----'r+',配合 write,会把文件原本开头的内容,替换掉。进行覆盖
f.write('我') # 注意,这个是2个字符。一个中文字相当于两个字符。
# 3、关闭文件
f.close()
使用 w+ ,写入-------根据指针,先清空原先文件中所有内容,再写入新的内容
# 1、打开文件---w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 f = open('python.txt', 'w+', encoding='utf-8') # 2、读取文件----'w+',配合 write,会把文件原本开头的内容,先情况。再进行写入 f.write('5') # 注意,是先清空原先文件中所有内容,再写入新的内容 # 3、关闭文件 f.close()
使用 a+ ,写入-------根据指针,移动到末尾,追加写入一个。
# 1、打开文件---a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 f = open('python.txt', 'a+', encoding='utf-8') # 2、读取文件----'a+',配合 write,在末尾追加写入内容 f.write('9') # 注意,是在末尾追加 # 3、关闭文件 f.close()
# 1、打开文件---a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。
# 如果该文件不存在,创建新文件用于读写。
f = open('python.txt', 'a+', encoding='utf-8')
# 2、读取文件----'a+',配合 write,在末尾追加写入内容
f.write('\n9') # 注意,是在末尾追加,\n 换行符。
# 3、关闭文件
f.close()
读写 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头
# 1、打开文件---rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
# 如果该文件不存在,创建新文件用于读写。
f = open('python.txt', 'rb+')
# 2、读写文件---读2个字节。
contents = f.read(2)
print(contents)
# 3、关闭文件
f.close()
seek函数移动光标
无论是文件读操作,还是写操作。其起始位置都是文件光标决定的。
r => 文件头
w => 清空文件内容,指向文件头
a => 文件尾
光标在刚打开文件时,默认情况下是根据r、w、a模式相关固定的。但是我们可以通过某些方法,人为移动光标。可以通过seek方法实现。
seek 英 /siːk/ v. 寻找;寻求,谋求;请求(帮助),征求(意见);试图,设法;找出,找到(seek sb./sth. out);自然地向……移动
offset 英 /ˈɒfset/ n. 抵消物,补偿;偏离量,偏离距离
whence 英 /wens/ adv. 从何处;由此;到原来的地方
f.seek(offset,whence=0) offset:开始的偏移量,也就是代表需要移动偏移的字节数 whence:给offset参数一个定义,表示要从哪个位置开始偏移;0 代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
实际工作中,seek主要用于重置光标到起始位置。
f.seek(0) # 0 代表从文件开头开始算起 0 代表从文件开头开始算起 或 f.seek(0, 0) # 0 代表从文件开头开始算起 0 代表从文件开头开始算起
其他应用:文章来源:https://www.toymoban.com/news/detail-778655.html
# 读写 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头 >>> f = open('workfile', 'rb+') >>> f.write(b'0123456789abcdef') 16 >>> f.seek(5) # 等同于 f.seek(5,0)----从0开始向右移动5个字节 5 >>> f.read(1) b'5' >>> f.seek(-3, 2) # 从右向左移动3个字节,offset:开始的偏移量,也就是代表需要移动偏移的字节数。。。whence:给offset参数一个定义,表示要从哪个位置开始偏移;2代表从文件末尾算起。----也就是,从末尾向左移动3个字节----def 13 >>> f.read(1) b'd'
# 读写 rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头 f = open('python.txt', 'rb+') f.write(b'0123456789abcdef') a = f.seek(5) # 等同于 f.seek(5,0)----从0开始向右移动5个字节 b = f.read(1) c = f.seek(-3, 2) # 从右向左移动3个字节,offset:开始的偏移量,也就是代表需要移动偏移的字节数。。。whence:给offset参数一个定义,表示要从哪个位置开始偏移;2代表从文件末尾算起。----也就是,从末尾向左移动3个字节----def d = f.read(1) print(a,b,c,d)
文章来源地址https://www.toymoban.com/news/detail-778655.html
到了这里,关于Python---文件、基本操作:打开open,写入write,关闭close,读取read/readlines,移动光标seek,mode模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!