python--⾼级内容(⽂件,爬⾍,xml解析)
⽂件的打开⽅式:
open(name[,mode[buf]]) name:⽂件路径 mode:打开⽅式buf:缓冲buffering⼤⼩
打开关闭⽂件:
Python提供了必要的函数和⽅法进⾏默认情况下的⽂件基本操作。你可以⽤file对象做⼤部分的⽂件操作。
open函数
你可以先⽤Python内置的open()函数打开⼀个⽂件,创建⼀个file对象,
并且可以利⽤不同模式下打开⽂件的属性来对⽂件进⾏编辑
举例:
file object open(file_name , access_mode, buffering)
# file_name:file_name变量是⼀个包含了你要访问的⽂件名称的字符串值。
# access_mode:access_mode决定了打开⽂件的模式:只读,写⼊,追加等。
# 所有可取值见如下的完全列表。这个参数是⾮强制的,默认⽂件访问模式为只读(r)。
# buffering:如果buffering的值被设为0,就不会有寄存。
# 如果buffering的值取1,访问⽂件时会寄存⾏。如果将buffering的值设为⼤于1的整数,表明了这就是的寄存区的缓冲⼤⼩。
# 如果取负值,寄存区的缓冲⼤⼩则为系统默认。
不同模式打开⽂件描述
# r 以只读⽅式打开⽂件。⽂件的指针将会放在⽂件的开头。这是默认模式。
# rb 以⼆进制格式打开⼀个⽂件⽤于只读。⽂件指针将会放在⽂件的开头。这是默认模式。
# r+ 打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。
# rb+ 以⼆进制格式打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。上单英雄
# w 打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
# wb 以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
# w+ 打开⼀个⽂件⽤于读写。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
# wb+ 以⼆进制格式打开⼀个⽂件⽤于读写。如果该⽂件已存在则将其覆盖。如果该⽂件不存在,创建新⽂件。
# a 打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊
# ab 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。
# a+ 打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写。
# ab+ 以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。
如果该⽂件不存在,创建新⽂件⽤于读写。
File对象的属性
⼀个⽂件被打开后,你有⼀个file对象,你可以得到有关该⽂件的各种信息。
以下是和file对象相关的所有属性的列表:
# 属性描述
# file.closed 如果⽂件已被关闭返回true,否则返回false。
# de 返回被打开⽂件的访问模式。
# file.name 返回⽂件的名称。
残疾人驾驶# file.softspace 如果⽤print输出后,必须跟⼀个空格符,则返回false。否则返回true
Close()⽅法
File对象的close()⽅法刷新缓冲区⾥任何还没写⼊的信息,并关闭该⽂件,这之后便不能再进⾏写⼊。
当⼀个⽂件对象的引⽤被重新指定给另⼀个⽂件时,Python会关闭之前的⽂件
Write()⽅法
Write()⽅法可将任何字符串写⼊⼀个打开的⽂件。需要重点注意的是,Python字符串可以是⼆进制数据,⽽不是仅仅是⽂字。
Write()⽅法不在字符串的结尾不添加换⾏符('\n'):
⽰例:
fileObject.write(string);
read()⽅法
read()⽅法从⼀个打开的⽂件中读取⼀个字符串。需要重点注意的是,Python字符串可以是⼆进制数据,⽽不是仅仅是⽂字。
⽰例:
在这⾥,被传递的参数是要从已打开⽂件中读取的字节计数。该⽅法从⽂件的开头开始读⼊,如果没
李嘉诚的经典名言有传⼊count,它会尝试尽可能多地读取更多的内容,很可能是直到⽂件的末尾。
⽂件位置:
tell()⽅法告诉你⽂件内的当前位置;换句话说,下⼀次的读写会发⽣在⽂件开头这么多字节之后:
seek(offset [,from])⽅法改变当前⽂件的位置。Offset变量表⽰要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将⽂件的开头作为移动字节的参考位置。如果设为1,则使⽤当前的位置作为参考位置。如果它被设为2,那么该⽂件的末尾将作为参考位置。
重命名和删除⽂件
Python的os模块提供了帮你执⾏⽂件处理操作的⽅法,⽐如重命名和删除⽂件。
要使⽤这个模块,你必须先导⼊它,然后可以调⽤相关的各种功能。
rename()⽅法:
伤感小文章rename()⽅法需要两个参数,当前的⽂件名和新⽂件名。
⽰例:
remove()⽅法
你可以⽤remove()⽅法删除⽂件,需要提供要删除的⽂件名作为参数。
⽰例:
爬⾍⽰例:
# 爬⾍
制作甜甜圈# 从urllib导⼊请求
from urllib import request
# request.urlopen 请求打开⽹址
response request.urlopen('www.jd')
# 在本地创建⼀个⽂件,然后把此⽂件存在⼀个变量中
xml open('jd_xml.html', 'w+', encoding'utf-8')
# 把服务器的响应 response 处理 read()
# .read()返回全部全部内容的字符串,
# .readlines() 返回list,list的每个元素是每⼀⾏的字符串
# .readline()返回⼀⾏的字符串,运⾏第⼆次,返回的就是第⼆⾏的字符串
ad()
xml.write(str(html.decode('utf-8')));
print('读取完毕')
python xml解析:
XML 指可扩展标记语⾔(e X tensible M arkup L anguage)被设计⽤来传输和存储数据。
XML是⼀套定义语义标记的规则,这些标记将⽂档分成许多部件并对这些部件加以标识。
科目三理论考试它也是元标记语⾔,即定义了⽤于定义其他与特定领域有关的、语义的、结构化的标记语⾔的句法语⾔。
python对XML的解析
常见的XML编程接⼝有DOM和SAX,这两种接⼝处理XML⽂件的⽅式不同,当然使⽤场合也不同。
python有三种⽅法解析XML,SAX,DOM,以及ElementTree:
1.SAX (simple API for XML )
pyhton 标准库包含SAX解析器,SAX⽤事件驱动模型,通过在解析XML的过程中触发⼀个个的事件并调⽤⽤户定义的回调函数来处理XML ⽂件。
2.DOM(Document Object Model)
将XML数据在内存中解析成⼀个树,通过对树的操作来操作XML。
3.ElementTree(元素树)
ElementTree就像⼀个轻量级的DOM,具有⽅便友好的API。代码可⽤性好,速度快,消耗内存少。
注:因DOM需要将XML数据映射到内存中的树,⼀是⽐较慢,⼆是⽐较耗内存,⽽SAX流式读取XML⽂件,⽐较快,占⽤内存少,但需要⽤户实现回调函数(handler)。
Python中提供的XML解析⽅式:
⽅法特点
SAX SAX解析通过流模式在解析XML的过程中触发对应的事件(start_element、char_data、end_element)并调⽤⽤户定义的回调函数来处理XML⽂件。
DOM将XML数据在内存中解析成⼀个树,通过对树的操作来操作XML,占⽤内存⼤,解析速度较慢,优点是可以任意遍历树的节点。ElementTree 类似⼀个轻量级的DOM。
XML⽂件格式:
<tag attrib = > text </tag> tail
例:<APP_KEY channel = 'CSDN'> hello123456789 </APP_KEY>
tag,为标签,⽤于标识该元素表⽰哪种数据,即APP_KEY
attrib,即属性,⽤Dictionary形式保存,即{'channel' = 'CSDN'}
text,⽂本字符串,可以⽤来存储⼀些数据,即hello123456789
tail,尾字符串,并不是必须的,例⼦中没有包含。
ElementTree解析XML⽂件的过程:
导⼊ElementTree
解析Xml⽂件到根节点:
直接解析XML⽂件并获得根节点
解析字符串
遍历根节点可以获得⼦节点,然后就可以按照⾃⼰需要来获取字段
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论