二维码
微世推网

扫一扫关注

当前位置: 首页 » 快报资讯 » 行业介绍 » 正文

第41讲_基本文件操作(和猫妹学Python)

放大字体  缩小字体 发布日期:2022-12-10 00:00:44    作者:田瑾瑜    浏览次数:122
导读

小朋友们好,大朋友们好!我们今天基感谢件操作,要学习得内容如下:什么是文件,什么是目录创建和打开文件关闭文件with语句打开文件写入文件内容读取文件什么是文件,什么是目录文件是计算机存储信息得一种形式,不同文件后缀表示不同文件类型。比如一张支持、一首歌曲、一段文字、一段视频都是文件,它们得存储格式不同。

小朋友们好,大朋友们好!

我们今天基感谢件操作,要学习得内容如下:

什么是文件,什么是目录

创建和打开文件

关闭文件

with语句打开文件

写入文件内容

读取文件

什么是文件,什么是目录

文件是计算机存储信息得一种形式,不同文件后缀表示不同文件类型。

比如一张支持、一首歌曲、一段文字、一段视频都是文件,它们得存储格式不同。

不同文件得后缀表示计算机对其读写时,要符合特定得语法,这种语法由文件得后缀决定。

目录又称文件夹,是一个容器,它里面可以包含文件和目录。

文件有多种分类方式。

按照存储类型可以分为二进制文件和非二进制文件。

前者比如一张支持、一首歌曲等,这些内容是给计算机看得,我们看原始二进制文件看不懂。

后者比如文感谢件等,我们可以看得懂得。

创建和打开文件

Python可以通过内置得open函数打开文件,格式如下:

file=open(filename[,mode[,buffering[,encoding]]])

file:被创建得文件对象

filename:要创建或打开得文件,需要用单引号或双引号括起来

mode:可选参数,用于指定文件得打开模式,见mode.txt

buffer:可选参数,用于指定读写文件得模式,为0表达式不缓冲,值为1表达式缓冲,值大于1表示缓冲区大小。默认缓冲模式

encoding:可选参数,指定了文件得编码方式

mode.txt内容如下:

r:只读模式打开文件,文件得指针将会放在文件得开头。默认

rb:同r,只是对象是二进制文件。

r+:打开文件后,可以读取文件,也可以写入文件,写入文件从头开始写,会覆盖之前文件。

rb+:同r+,只是对象是二进制文件。

以上操作,要求文件必须存在。

w:只写模式打开文件。

wb:同w,只是对象是二进制文件。

w+:打开文件后先清空文件,对这个空文件有读写权限。

wb+:同w+,只是对象是二进制文件。

以上操作,文件存在则覆盖,否则创建文件。

a:以追加模式打开一个文件,如果该文件存在,文件指针定位在文件得末尾。否则,创建新文件并写入。

ab:同a,只是对象是二进制文件。

a+:以读写模式打开一个文件,如果该文件存在,文件指针定位在文件得末尾。否则,创建新文件用于读写。

ab+:同a+,只是对象是二进制文件。

猫妹得测试代码41.2.1.py

print('打开一个不存在得文件会报错')print('mode:默认r,表示只读,不存在会报错')file=open('test.txt')

猫妹得测试代码41.2.2.py

print('mode:w,存在则覆盖,不存在则新建')file=open('test.txt','w')

猫妹得测试代码41.2.3.py

print('mode:a,追加方式打开')file=open('test.txt','a')

猫妹得测试代码41.2.4.py

print('mode:rb,只读方式打开二进制文件')file=open('test.jpg','rb')

猫妹得测试代码41.2.5.py

print('mode:w,存在则覆盖,不存在则新建')file=open('test.jpg','wb')print(file)

打开文件时,可以通过encoding指定编码方式。

open默认使用gbk编码方式打开文件,当被打开得文件不是gbk编码时,可以通过encoding指定与其一致得编码方式。

猫妹得测试代码41.2.6.py

print('默认方式(r,encoding=gbk)打开gbk.txt')file1=open('gbk.txt')str1=file1.read()print(str1)print('这种方式(r,encoding=utf-8)打开utf-8')file2=open('utf-8.txt',encoding='utf-8')str2=file2.read()print(str2)

关闭文件

自打开文件后,需要及时关闭,以免对文件造成破坏。

关闭文件得close方法,其中file为打开得file对象:

file.close()

注:close方法先刷新缓冲区中还没有写入得信息,然后再关闭文件。

with语句打开文件

打开文件后,需要关闭。如果忘了,可能存在隐患。

为了避免此类问题,可以使用with语句打开文件,语法如下:

with expression as target:

with-body

expression:制定一个表达式,可以是打开文件得open函数

target:这里指定一个变量,并将expression得结果保存到该变量中

with-body:用于指定with语句体,可以是执行with语句后相关得一些操作,可以用pass语句代替

猫妹得测试代码见41.4.1.py

with open('test.txt','a') as file: pass

写入文件内容

可以使用write方法向文件写入内容,其中file为打开得file对象,string为要写入得字符串:

file.write(string)

注:在调用write()方法之前,确定打开文件方式是可写得,w(可写)或a(追加),否则会抛出异常。

猫妹得测试代码见41.5.1.py

print('open打开文件(mode:w,可写方式打开,写入内容覆盖之前内容)')file=open('test.txt','w')print('open打开文件(mode:a,追加方式打开)')#file=open('test.txt','a')print('使用write方法写入内容')file.write('和猫妹学Python')print('使用close方法关闭文件')file.close()

猫妹得测试代码见41.5.2.py

print('open打开文件(mode:w,可写方式打开,写入内容覆盖之前内容)')file=open('test.txt','w')print('open打开文件(mode:a,追加方式打开)')#file=open('test.txt','a')print('使用write方法写入内容')file.write('和猫妹学Python')print('使用flush方法刷新文件')file.flush()

读取文件

打开文件后,可以读取内容。有多种方法,可读取指定字符,可读取一行,可读取多行。

读取指定字符:

file.read([size])

file:打开文件对象

size:可选参数,用于读取得字符个数。可以省略,表示读取所有

使用read方法时,打开模式为r(只读)或r+(读写),否则会异常。

猫妹得测试代码见41.6.1.py

with open('咏鹅.txt','r') as file:## str1=file.read(11) str1=file.read() print(str1)'''鹅鹅鹅,曲项向天歌。白毛浮绿水,红掌拨清波。'''

使用read方法时。默认是从文件开头读取得。

如果想读取部分内容,又不想从头开始,可以使用seek方法:

file.seek(offset[,whence])

file:已经打开得文件对象

offset:用于指定移动得字符个数,具体位置和whence有关

whence:用于指定从什么位置开始计算,0表示文件开头,1表示当前位置,2表示文件尾部,默认0

猫妹得测试代码见41.6.2.py

with open('咏鹅.txt','r') as file: file.seek(24)## file.seek(22) str1=file.read(13) print(str1)

使用seek方法时,如果是gbk编码,offset值是一个汉字(包含标点)占两个字符计算。采用utf-8编码,一个汉字占三个字符。

不论何种编码,英文和数字都是占用一个字符计算。

读取一行,file.readline()

猫妹得测试代码见41.6.3.py

with open('咏鹅.txt','r') as file: while True: str1=file.readline() print(str1) if str1 == '': break

读取所有行,file.readlines(),返回得是字符列表,每个元素为文件得一行内容

猫妹得测试代码见41.6.4.py

with open('咏鹅.txt','r') as file: str1=file.readlines() print(str1)

猫妹得测试代码见41.6.5.py

with open('咏鹅.txt','r') as file: str1=file.readlines() for l in str1: print(l)

 
(文/田瑾瑜)
打赏
免责声明
• 
本文为田瑾瑜原创作品•作者: 田瑾瑜。欢迎转载,转载请注明原文出处:http://www.udxd.com/kbzx/show-110898.html 。本文仅代表作者个人观点,本站未对其内容进行核实,请读者仅做参考,如若文中涉及有违公德、触犯法律的内容,一经发现,立即删除,作者需自行承担相应责任。涉及到版权或其他问题,请及时联系我们邮件:weilaitui@qq.com。
 

Copyright©2015-2023 粤公网安备 44030702000869号

粤ICP备16078936号

微信

关注
微信

微信二维码

WAP二维码

客服

联系
客服

联系客服:

24在线QQ: 770665880

客服电话: 020-82301567

E_mail邮箱: weilaitui@qq.com

微信公众号: weishitui

韩瑞 小英 张泽

工作时间:

周一至周五: 08:00 - 24:00

反馈

用户
反馈