文件的基本操作--利用爬取的王者荣耀李信台词进行练习
文章目录
- 文件的基本操作
- 文件打开和关闭
- 文件打开模式
- 读取/写入文件
- StringIO和BytesIO
- 内存假文件
- 上下文管理
- os模块
- os模块 的目录及文件操作
- os.path模块
- 小练习-爬取王者荣耀李信台词保存到txt文件。
文件的基本操作
文件打开和关闭
打开文件: f = open(file_path, mode='r')
传入表示文件路径的字符串,会返回一个文件对象,
第一个参数是要打开文件的路径
第二个参数是打开模式关闭文件: f.close()
调用给定文件对象的close方法
文件打开模式
模式 描述r 以只读方式打开文件,文件指针默认放在文件开头,文件不存在则报错r+ 打开一个文件用于读写,文件指针默认放在文件开头,文件不存在则报错w 打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果不存在,创建新文件W+ 打开一个文件用于读写,如果该文件已存在则将其覆盖,如果不存在,创建新文件a 打开一个文件用于追加,如果文件已存在,文件指针会放在文件结尾(也就是说,新的内容将会被写到已有内容之后)如果不存在,创建新文件进行写入a+ 打开一个文件用于读写,如果文件已存在,文件指针会放在文件结尾,文件打开时会是追加模 式,如果不存在,创建新文件用于读# 其他模式:rb rb+ wb wb+ ab ab+
加上b,以二进制的格式打开文件,进行上述操作。
读取/写入文件
操作 | 方法 |
---|---|
读取指定大小的内容 | f.read() |
读取一行的内容 | f.readline() |
读取多行内容 | f.readlines() |
写入内容 | f.write(data) |
写入多行(需要自己加换行符) | f.writelines(lines) |
立即刷新缓冲 | f.flush() |
获得游标位置 | f.tell() |
调整游标位置 | f.seek(position) |
StringIO和BytesIO
内存假文件
import io# 字节流
# 创建IO操作
sio = io.StringIO()
# 读取
sio.getvalue()
# 写入
sio.write(str(i))'''
StringIO在内存中如同打开文件一样操作字符串,因此也有很多方法
当创建的StringIO调用 close() 方法时,在内存中的数据会丢失
'''# 二进制流
# 创建IO操作
sio = io.BytesIO()
# 读取
sio.getvalue()
# 写入
sio.write(str(b'abc'))BytesIO 和 StringIO 类似,但是BytesIO操作的是Bytes数据,decode解码
上下文管理
格式:with open(file_path, mode='r', encoding='utf-8') as f:
好处:使用with打开文件,文件不需要自己关闭,会在跳出with时自动执行f.close()
参数:file_path:文件路径mode:打开方式encoding:是编码格式
os模块
os模块 的目录及文件操作
显示当前路径: os.getcwd()
展示当前目录内容: os.listdir(path)
改变当前路径: os.chdir(path)
创建目录: os.mkdir(文件名)
删除目录: os.rmdir(文件名)
使用Linux命令:os.system()
删除文件:os.remove(文件名)
重命名:os.rename("oldname","new")
os.path模块
针对属性
路径拼接: os.path.join(path1, path....)
所在目录/父级目录: os.path.dirname
基本短路径: os.path.basename(路径)
绝对路径: os.path.abspath()
相对路径: os.path.relpath
资源大小: os.path.getsize 获取字节
资源时间: os.path.getctime /创建getatime /访问getmtime修改
路径是否存在: os.path.exists
是否是目录: os.path.isdir
是否是文件: os.path.isfile
是否是绝对路径: os.path.isabs
小练习-爬取王者荣耀李信台词保存到txt文件。
# 导入os模块
import os
# 导入requests模块
import requests
# 导入解析模块
from lxml import etree # 目标url,页面无法直接复制
url = 'https://www.gmz88.com/jiaocheng/144398.html'
# 请求头,伪装成浏览器进行请求
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4209.2 Safari/537.36",
}
# 发送请求,使用res接受响应
res = requests.get(url, headers=headers)
# 使用etree.HTML对响应进行格式化处理,方便解析
html = etree.HTML(res.text) # 提取台词数据到列表中
data_list = html.xpath('//div[@class="info_tex_center"]/p/text()')# 如果lixin文件夹不存在,则创建
if not os.path.exists('李信'):os.mkdir('李信')
# 在文件夹‘李信’内打开一个名为‘tc’的txt文档
with open('李信/tc.txt', 'w', encoding='utf-8') as f:# 从列表中循环取出数据for data in data_list:# 对数据进行去空格处理,并转成字符串格式,方便后续操作data = str(data.strip())# 此时如果将内容输出到控制台会发现有多余数据,而且多余数据长度较长所以进行一个长度判断if len(data)<35:# 将处理好的数据写入'tc.txt'文档,并加‘/n’进行换行f.write(data+'\n')
这样,这个小练习就完成了,下面是效果
此练习比较简单,重在练习本章所学内容,如果对爬虫部分感兴趣的看官可以移步爬虫分类进行了解。
文件的基本操作--利用爬取的王者荣耀李信台词进行练习相关推荐
- 数据藏在json文件中,如何爬取---以王者荣耀官网为例
此前写了一个爬虫基础案例---爬取王者荣耀英雄与技能介绍 python爬虫------王者荣耀英雄及技能爬取并保存信息到excelhttps://blog.csdn.net/knighthood200 ...
- Python如何爬取《王者荣耀盒子》APP
Python如何爬取<王者荣耀盒子>APP 1.安装fiddler 百度网盘下载链接:https://pan.baidu.com/s/1EjGfVrYpAaweitUxv7DS8w 提取码 ...
- 用Python爬取《王者荣耀》英雄皮肤数据并可视化分析,用图说话
大家好,我是辰哥~ 今天辰哥带大家分析一波当前热门手游<王者荣耀>英雄皮肤,比如皮肤上线时间.皮肤类型(勇者:史诗:传说等).价格. 获取数据 数据来源于<王者荣耀官方网站>, ...
- python 爬取手机王者荣耀盒子出装
这是jack 老哥的教程,自己修改了一下,原URL:https://blog.csdn.net/c406495762/article/details/76850843 要点:1.hero.ljust( ...
- Scrapy框架爬取下载王者荣耀英雄壁纸
#wzry.py项目文件 import scrapy from selenium import webdriver from wzrypro.items import WzryproItem from ...
- python selenium爬取斗鱼王者荣耀直播页面
目标网站 在这里插入图片描述 抓取第一个直播的标题 现在来实现批量抓取 这里用xpath匹配 第一页抓取完毕,开始抓取剩下的页数 一共31页,每页数据为一个列表,全部数据套在一个大列表中 以下是完整代 ...
- Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理
Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录
- 爬取服务器public文件夹,数据采集任务——爬取四川大学公共管理学院主页新闻实验报告...
1.实验目的和要求 1.1实验目的 爬取公共管理学院网站上的所有新闻,了解和熟悉网络信息采集的相关技术. 1.2实验要求 用任何可以用的方法,爬取四川大学公共管理学院(http://ggglxy.sc ...
- python使用selenium爬英雄联盟/王者荣耀壁纸 附源码
文章目录 LOL壁纸 分析 写代码 王者荣耀壁纸 分析 写代码 源码 lol 王者荣耀 之前看到好多爬王者荣耀和英雄联盟壁纸的,现在有时间,自己也搞个玩玩 记录一下,也帮助一下想要学习的朋友 LOL壁 ...
最新文章
- boost:进程管理
- ShapeMatching Using Fourier Descriptor
- 力扣——机器人能否返回原点
- python文本去重_Python做文本按行去重的实现方法
- 软件工程----8面向对象设计
- android 外部存储列表,如何获取Android设备的已安装外部存储列表
- JAVA对list集合进行排序Collections.sort()
- 房贷断供了,房子就要被收走,首付款怎么办?
- iOS系统什么天气app可以访问锁屏?
- 新闻发布系统,我学会了什么?
- 读书笔记三——你的灯亮着吗
- win7看不到共享打印机的计算机,win7搜不到共享打印机怎么办?-解决win7找不到共享打印机的方法 - 河东软件园...
- 如何在ArcGIS中打开卫星影像
- linux卸载软件垃圾清理,Ubuntu20.04系统卸载软件及清理系统垃圾缓存以及新力得...
- IEEE文献高级检索
- 养生篇01 (饭水分离法)
- 一个整人的vbs脚本(yzy原创)
- 网站域名DNS被劫持了如何解决?
- Android单应用开多进程与单进程跑多应用
- java基于springboot畜牧场信息管理系统
热门文章
- 很火的微信聊天界面个性签名设置方法,除了好看更重要的是...
- 强大合作伙伴生态系统助力 Denodo 在大中华区不断发展壮大
- 会议期刊论文发表介绍(计算机科学领域)【转载】
- 关于YY1139-2013心电诊断设备的共模抑制测试项的理解
- 2020 阿里最新面试题,掌握这些轻松拿offer
- 全志H616高画质芯片香橙派Orange Pi Zero2开发板音频测试说明
- 一个很不错的bash脚本编写教程
- 大学计算机手写笔记,法国大学教师发电脑禁令,研究显示:手写记笔记成绩更佳...
- 华为云数据治理生产线DataArts,让“数据‘慧’说话”
- follow Sam哥 OS 课程的漫长之路