Datawhale学习计划:python基础——任务5

一 file

学会处理文件和保存数据可让你的程序使用起来容易很多,例如,你可以选择输入不同的数据,输入时间,并随时打开文件操作,退出后仍可继续上次操作。

  1. 打开文件方式
    a) 读
    file中可以存储大量数据,每当分析或者修改存储信息时,读取文件十分有用
    (i) 读取整个文件
    输入文件pi_digits.txt
    在这里插入图片描述
    打开并读取该文件
    Tips: 输出结果会多一个空行,如需删除用strip()
    在这里插入图片描述
    (ii) 文件路径
    windows系统
    在这里插入图片描述
    (iii) 逐行读取
    在这里插入图片描述
    (iv) 创建一个包含文件各行内容的列表
    在这里插入图片描述
    (v) 使用文件的内容
    在这里插入图片描述
    (vi) 包含一百万位的大型文件
    在这里插入图片描述
    b) 写
    保存数据的最简单方法之一是将其写到文件中。通过将输出写入文件,关闭终端窗口,输出仍存在;进一步,可以随时查看输出,处理数据,并由他人分享。
    (i) 写入空文件
    第二行open提供了两个实参,第一个是打开文件名称,第二个w是指以写入模式打开该文件
    Tips:读取模式(‘r’),写入模式(‘w’),附加模式(‘a’),读取写入模式(‘r+’),详情可见部分2
    在这里插入图片描述
    (ii) 写入多行
    Tips: 函数write()默认不换行,需自行添加换行符
    在这里插入图片描述
    (iii) 附加到文件
    附加模式给文件添加内容,非覆盖原内容。
    在这里插入图片描述

  2. 文件对象的操作方法
    a) r:读取模式
    b) w:写入模式
    c) a:附加模式
    d) r+:读取写入模式
    e) w+:消除文件内容,以读写模式打开
    f) a+:以读写方式打开文件,并把文件指针移到文件尾
    g) b:以二进制模式打开文件,而不是以文本模式,该模式只对Windows或Dos有效,类Unix的文件是用二进制模式进行操作的
    h) f.close():关闭文件,记住用open()打开文件后一定要记得关闭它,否则会占用系统的可打开文件句柄数
    i) f.fileno():获得文件描述符,是一个数字
    j) f.flush():如果文件是一个交互终端,则返回True,否则返回False
    k) f.isatty():读出文件,如果有count,则读出count个字节
    l) f.readline():读出一行信息
    m) f.readlines():读出所有行,也就是读出整个文件的信息
    n) f.seek(offset[,where]):把文件指针移动到相对于where的offset位置。where为0表示文件开始处,这是默认值 ;1表示当前位置;2表示文件结尾
    o) f.tell():获得文件指针位置
    p) f.truncate([size]):截取文件,使文件的大小为size
    q) f.write(string):把string字符串写入文件
    r) f.writelines(list):把list中的字符串一行一行地写入文件,是连续写入文件,没有换行

  3. 学习对excel及csv文件进行操作
    a) excel文件
    xlrd主要是用来读取excel文件
    在这里插入图片描述
    xlwt主要是用来写excel文件
    在这里插入图片描述
    b) csv文件
    CSV是一种以逗号分隔数值的文件类型,在数据库或电子表格中,常见的导入导出文件格式就是CSV格式,CSV格式存储数据通常以纯文本的方式存数数据表。导入CSV文件后,用CSV模块读取CSV文件。
    在这里插入图片描述

二 os模块

Python os模块包含普遍的操作系统功能,与平台无关。
常用操作:

  1. os.name:输出字符串指示正在使用的平台。window 用’nt’表示
  2. os.getcwd():函数得到当前工作目录,即当前Python脚本工作的目录路径
  3. os.listdir():返回指定目录下的所有文件和目录名
  4. os.remove():删除一个文件
  5. os.system():运行shell命令
  6. os.sep:可以取代操作系统特定的路径分割符
  7. os.linesep:字符串给出当前平台使用的行终止符
  8. os.path.split():函数返回一个路径的目录名和文件名
  9. os.path.isfile()和os.path.isdir():函数分别检验给出的路径是一个文件还是目录
  10. os.path.exists():函数用来检验给出的路径是否真的存在
  11. os.path.abspath(name):获得绝对路径
  12. os.path.normpath(path):规范path字符串形式
  13. os.path.getsize(name):获得文件大小,如果name是目录返回0L,如果那么为文件,则返回文件的字节数
  14. os.path.splitext():分离文件名与扩展名
  15. os.path.join(path,name):连接目录与文件名或目录
  16. os.path.basename(path):返回文件名
  17. os.path.dirname(path):返回文件路径

三 datetime模块

datetime是Python常用内在模块之一,主要处理日期和时间。

  1. 获取当前日期和时间
    在这里插入图片描述
  2. 获取指定日期和时间
    在这里插入图片描述
  3. datetime转换为timestamp
    在Python中,时间用数字表示,以1970年1月1日 00:00:00为界,UTC+00:00(UTC:世界协调时间),记为epoch time:0,此前为负,后面为正,timestamp指与epoch time相对应的秒数。
    在这里插入图片描述
  4. timestamp转换为datetime
    在这里插入图片描述
  5. str转换为datetime
    在这里插入图片描述
  6. datetime转换为str
    在这里插入图片描述
  7. datetime加减
    在这里插入图片描述
  8. 本地时间转换为UTC时间
    datetime类中有时区属性tzinfo,默认为None,故需给datetime设置一个时区,设置为UTC+?:00时区需与系统时间相符
    在这里插入图片描述
  9. 时区转换
    在这里插入图片描述

四 类和对象

面向对象编程是最有效的软件编写方法之一。在面向对象编程时,编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。一大对象都具有通用行为,基于类创建对象时,对象须具有该类行为,且可有单独个性。


  1. 用来描述具有相同的属性和方法的对象的集合。类里可以有多个属性,也可以有多个方法。同时也有自己的字段。例如,电脑是一个类,其中可包含价格,品牌,配置等。给出类的方式:class(关键字)——类名(首字母第一个大写)——object(表示该类是从哪个类继承下来的)
  2. 对象
    对象是类的实例。这里表示类里可以有多个属性,也可以有多个方法。同时也有自己的字段。
    在这里插入图片描述

五 正则表达式

正则表达式在处理字符串的时候扮演着非常重要的角色,它可以帮我们判断某个字符串是否符合某一个模式,其次正则表达式可以帮我们提取某个字符串中的重要部分,做子字符串的提取,在网络爬虫的时候也十分常用。
特殊字符:
a) “^d”:代表的意思是以d元素开头的任意一个字符串,后面的元素是什么都可以。
b) “.”: 较为常用,其代表的意思是任意字符,其表示的范围非常广,可以接任意字符,不论是中英文,还是下划线之类的特殊字符,都是可以代表的。例如,可接在“^d”之后表示任意字符。
c)“*” 也十分常用,其代表的意思是前面的字符可以重复任意多遍,可以是0次,1次,2次等任意多次。
d) “ ” : 结 尾 字 符 , 例 如 “ 3 ”:结尾字符,例如“3 3”表示以3结尾的字符串。
e) “?”:非贪婪匹配项。默认情况为贪婪匹配,字符串会匹配最大长度。
f)“+”:前面的任意字符至少出现一次,才能匹配成功。
g) “{}”:限定前面字符出现次数,例如{1}代表出现一次,{1,}至少一次{2,5}至少2次,至多5次。
h) “|”:“或”关系。
i) “[ ]”:满足其中任意一个条件即可。
j) “\S, \s”:\s匹配空格,\S匹配非空格。
k) “\W, \w”:\w表示[A-Za-z0-9]中任意一个字符,\W相反。
l) “[\u4E00-\u9FA5”:匹配汉字。
m) “\d”:匹配数字。
n) 例子
在这里插入图片描述

六 re模块

re模块是python中处理正在表达式的一个模块。

  1. match(匹配单值)
    从字符串的开头进行匹配, 匹配成功就返回一个匹配对象,匹配失败就返回None
    在这里插入图片描述
  2. search(匹配单值)
    浏览整个字符串去匹配第一个,未匹配成功返回None
    在这里插入图片描述
  3. findall(非单值)
    获取非重复的匹配列表;如果有一个组则以列表形式返回,且每一个匹配均是字符串;如果模型中有多个组,则以列表形式返回,且每一个匹配均是元祖;空的匹配也会包含在结果中
    在这里插入图片描述
  4. sub
    替换匹配成功的指定位置字符串
    在这里插入图片描述
  5. compile
    python代码最终会被编译为字节码,之后才被解释器执行。在模式匹配之前,正在表达式模式必须先被编译成regex对象,compile用于预先编译提高性能。
  6. group()与groups()
    用于匹配对象。
    a) group() 返回所有匹配对象,或返回某个特定子组,如果没有子组,返回全部匹配对象
    b) groups() 返回一个包含唯一或所有子组的的元组,如果没有子组,返回空元组
  7. split
    根据正则匹配分割字符串
    在这里插入图片描述

七 http请求

在进行数据订正时,一个个手动操作较为麻烦,我们可以写一个python脚本,发起一个http请求,并打印请求结果。

  1. python自带库----urllib
    集合了python2的urllib和urllib2两个模块,解决了urllib不可伪装user Agent和urllib2无urlencode两个主要问题,功能齐全。
  2. python自带库–httplib
    httplib是一个相对底层的http请求模块,urlib就是基于httplib封装的,实现了HTTP和HTTPS的客户端协议。
  3. 第三方库–requests (较常用,最简单,功能全)
    a) 安装
    pip install requests
    b) 设定request
    导入urllib2包,变量为request,手动添加http请求的首部字段值,例如User-Agent、Cookie、Accept等等。
    c) 发起http请求
    调用urllib2.urlopen(request)发起远程http请求,获得响应值response;
    d) 获取请求结果
    获得response后,我们可以把它转换成json格式,调用json包,json_data = json.loads(response.read())。
    选取result部分,即json_data.get(“result”)。
    e) 请求方法
    (i) GET: 方法用于使用给定的URI从给定服务器检索信息。使用GET的请求应仅检索数据,并且不应对数据产生其他影响。
    (ii) HEAD: 与GET相同,但它仅传输状态行和标题部分。
    (iii) POST: 请求用于使用HTML表单向服务器发送数据,例如客户信息,文件上传等。
    (iv) PUT: 用上传的内容替换目标资源的所有当前表示。
    (v) DELETE: 删除URI给出的目标资源的所有当前表示。
    (vi) CONNECT: 建立到给定URI标识的服务器的隧道。
    (vii) OPTIONS: 描述目标资源的通信选项。
    (viii) TRAC: 执行消息循环测试以及目标资源的路径。
  4. 例子
    在这里插入图片描述

参考资料

file:
《Python编程—从入门到实践》
https://blog.csdn.net/ulben/article/details/80337717
https://blog.csdn.net/qq_27171347/article/details/81017817

os模块:
https://blog.csdn.net/weixin_39541558/article/details/79971971

datetime:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431937554888869fb52b812243dda6103214cd61d0c2000

类和对象:
《Python编程—从入门到实践》
https://blog.csdn.net/guoxinjie17/article/details/77850385
https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431864715651c99511036d884cf1b399e65ae0d27f7e000

正则表达式:
https://blog.csdn.net/weixin_34235371/article/details/88262507
https://mp.weixin.qq.com/s?__biz=MzU3MzQxMjE2NA==&mid=2247483970&idx=4&sn=b9535c2118455507824980377e7a45a7&chksm=fcc34469cbb4cd7f08f201b3f3a2d29052a78aafab1a69e2bf73567e0b1f88642eb4a836338d&scene=21#wechat_redirect

re模块:
https://blog.csdn.net/Rabit999/article/details/79601022

http请求:
https://blog.csdn.net/lmb1612977696/article/details/78600892
https://blog.csdn.net/Stony_Confident/article/details/79233057
https://blog.csdn.net/boyun58/article/details/85044637
https://blog.csdn.net/zzzzzztt/article/details/80861135

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值