Excel中怎样计算面积? Excel制作计算圆面积工具的教程-英雄云拓展知识分享
99
2023-11-13
【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第3章,第1节,吕云翔、张扬和韩延刚等编著。
第3章 文件与数据存储
Python 以简洁见长,在其他语言中比较复杂的文件读写和数据I0, 在 Python 中由于比 较简单的语法和丰富的类库而显得尤为方便。这一章将从最简单的文本文件读写出发,重点 介绍 CSV 文件读写和操作数据库,同时介绍一些其他形式的数据存储方式。
3.1 Python 中的文件
3.1.1 基本的文件读写
谈到 Python 中的文件读写,总会使人想到 “open” 关键字,其最基本的操作如下面的
示例:
#最朴素的 open()方法
f =open('filename.text','r')
#do something
f.close()
#使用 with, 在语句块结束时会自动 clos e
with open('t1.text','rt')as f:#“r” 代表read,“t” 代表text, 一般“t” 为默认,可省略
content =f.read()
with open('t1.txt','rt')as f:
for line in f:
with open('t2.txt','wt')as f:
f.write(content)# 写入
append_str ='append'
with open('t2.text','at')as f:
#在已有内容上追加写入,如果使用“w”, 已有内容会被清除
f.write(append_str)
#文件的读写操作默认使用系统编码, 一般为UTF-8
#使用 encoding 设置编码方式
with open('t2.txt','wt',encoding='ascii')as f:
f.write(content)
#编码错误总是很烦人的,如果觉得有必要暂时忽略,可以这样:
with open('t2.txt','wt',errors='ignore')as f:# 忽略错误的字符
f.write(content)# 写入
with open('t2.txt','wt',errors='replace')as f:# 替换错误的字符
f.write(content)# 写入
with open('redirect.txt','wt')as f:
print('your text',file=f)
#读写字节数据,如图片、音频
with open('filename.bin','rb')as f:
data =f.read()
with open('filename.bin','wb')as f:
f.write(b'HelloWorld')
#从字节数据中读写文本(字符串),需要使用编码和解码
with open('filename.bin','rb')as f:
text =f.read(20).decode('utf-8')
with open('filename.bin','wb')as f:
f.write('Hello World'.encode('utf-8'))
不难发现,在 open(的参数中,第一个是文件路径,第二个则是模式字符(串)。模式 字符(串)代表了不同的文件打开方式,比较常用的是 “r” (代表读), “w” (代表写), “a”(代表写,并追加内容)。 “w” 和 “a”常常被混淆,其区别在于:如果用“w” 模式打 开一个已存在的文件,会清空文件中的内容,重新写入新的内容;如果用 “a”, 则不会清空 原有数据,而是继续追加写入内容。对模式字符(串)的详细解释可如图3-1所示。
在一个文件(路径)被打开后,就生成了一个 file 对象(在其他一些语言中常被称为句 柄),这个对象也拥有自己的一些属性:
f =open('h1.html','r')
print(f.name)# 文件名:“h1.html”
print(f.closed)# 是否关闭:False
print(f.encoding)# 编码方式: US-ASCII
f.close()
print(f.closed)#True
当然,除了最简单的 read) 和write()方法,还有一些其他的文件操作方法
#t1.txt 的内容:
#
#line 5
with open('t1.txt','r')as f1:
#返回是否可读
print(f1.readable())#True
#返回是否可写
print(f1.writable())#False
#逐行读取
print(f1.readline())#line 1
print(f1.readline())#line 2:cat
#读取多行到列表中
print(f1.readlines())#['line 3:dog\n','\n','line 5']
#返回文件指针当前位置
print(f1.tell())#38
print(f1.read())# 指针在末尾,因此没有读取到内容
f1.seek(0)# 重设指针
#重新读取多行
print(f1.readlines())#['line 1\n','line 2:cat\n','line 3:dog\n','\n',
'line 5']
with open('t1.txt','a+')as f1:
f1.write('new line')
f1.writelines(['a','b','c'])# 根据列表写入
f1.f lush()# 立刻写入,实际上是清空 IO 缓存
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~