本文主要是介绍nova-week2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基础知识
文件
概念
1.读写模式
- r 只读模式,只能读取和输出
- w只写模式(删除原文件,从头开始写)
- a只写模式(不影响原内容,在内容的结尾开始追加内容)
- wb只写模式+二进制数据操作
- w+可读可写模式
文件I/O基础函数及模式很详细
2.不同类型文件写入
- 图片(png或jpg)以’rb’模式写入
python读取图片的方法
读取及显示图片的详细方法 - 文字(txt或log)以w+'模式写入
- 视频(.mp4)以’rb’模式写入
imageio和cv2读取视频文件
测验
a=[1,5,2,4,3]
a.sort()
with open(r'C:\Users\lenovo\Desktop\test.txt','a') as f:for arr in a:f.write(str(arr))f.close()
with open(r'C:\Users\lenovo\Desktop\test.txt','a+') as f:f.seek(0,0)b=f.read(-2)f.write(str(b[::-1]))f.close()
注:
1.文件地址中的’'需要被转义,用r''或'\\'
解决
2.write()
函数只能写入str类型
3.'a/a+'
模式打开时光标在文档尾部,所以read读不出任何数据
4.seek(offset [,from])
函数,Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。
5.反转字符串的常见方法
reversed()
方法只能用于列表list,不能用于字符串
6.每次打开文件后,要记得用close()
关闭
函数
概念
1.定义一个函数(菜鸟教程)
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
def functionname( parameters ):"函数_文档字符串"function_suitereturn [expression]
2.函数封装
把你的代码的某一部分隐藏起来,设定为私有引用,只留下少数的函数接口来实现对应的功能,可以起到降低复杂度和保护代码隐私的作用
3.变量作用域
- 变量作用域是指变量能被访问的范围,由变量被定义的位置决定
- 就作用域而言,Python与C有着很大的区别,在Python中并不是所有的语句块中都会产生作用域。只有当变量在Module(模块)、Class(类)、def(函数)中定义的时候,才会有作用域的概念。
- 在作用域中定义的变量,一般只在作用域中有效。 需要注意的是:在if-elif-else、for-else、while、try-except\try-finally等关键字的语句块中并不会产成作用域。虽然是在if语句中定义的variable变量,但是在if语句外部仍然能够使用。
- 搜索变量名的优先级:局部作用域L > 嵌套作用域E > 全局作用域G > 内置作用域B
测验
#将上面的题目代码封装成一个函数,调用两次,第二次调用为第一次调用结果文件
def test(file):a=[1,5,2,4,3]a.sort()with open(file,'a') as f:for arr in a:f.write(str(arr))f.close()with open(file,'a+') as f:f.seek(0,0)b=f.read(-2)f.write(str(b[::-1]))f.close()
if __name__=="__main__":test(r"C:\Users\lenovo\Desktop\test.txt")test(r"C:\Users\lenovo\Desktop\test.txt")
爬虫实践
任务:获取example.com的正文内容和more的链接地址
import requests
from lxml import etree
def get_html(url):"获取网站的html代码并将其用lxml初始化,并返回"Html=requests.get(url)html=etree.HTML(Html.text)return html
def get_text(html):"获取html的正文部,并写入文件"with open(r"C:\Users\lenovo\Desktop\test.txt",'w')as f:txt=html.xpath("//h1/text()|//p/text()|//p/a/text()")f.write("正文部分:\n")for t in txt:f.write(t)f.write('\n')f.close()
def get_link(html):"获取html中的链接地址,并写入文件"with open(r"C:\Users\lenovo\Desktop\test.txt",'a')as f:link=html.xpath("//p/a/@href")f.write("链接地址:\n")for l in link:f.write(l)f.close()
if __name__=="__main__":html=get_html('http://www.example.com')get_text(html)get_link(html)
运行结果:
正文部分:
Example Domain
This domain is established to be used for illustrative examples in documents. You may use thisdomain in examples without prior coordination or asking for permission.
More information...
链接地址:
http://www.iana.org/domains/example
注:
1.下载第三方库直接在pycharm里下载file->settings->project:untitled->interpreter
2.url问题:需要在"www"前加上"http://"
3.用requests爬取,etree和xpath处理html代码
4.requests获取的是element
类型,通过html.text
转化为byte
类型再用etree.HTML处理
5.etree.xpath()
方法需要用到xpath语法
xpath语法基础
6.etree.xpath()
方法获得list
类型数据
7.改变字符串的编码的函数:.decode()
方法介绍_菜鸟教程
8.html里的换行是靠 < p> 实现的,而爬取的只是字符串,所以有换行
这篇关于nova-week2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!