Python 学习 DAY5(这一次的任务有点难)

2019-04-14 08:20发布

1. file 1.1打开文件的方式(读和写两种方式) 1.2 文件对象的操作方法 1.3 学习excel及其CSV操作 2. OS模快 3. datatime 模快 4. 类和对象 5. 正则表达 6. re 模快 7. http请求 前记:这次的任务真的很多,能写多少写多少,剩下的下次在写。 1.1 打开文件的方式(读和写两种方式) 打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的): >>> f = open('test.txt', 'r') r表示是文本文件,rb是二进制文件。(这个mode参数默认值就是r) 文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的 >>> f.close() python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。
  • read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果文件大于可用内存,为了保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
  • readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。
  • readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。
注意:这三种方法是把每行末尾的' '也读进来了,它并不会默认的把' '去掉,需要我们手动去掉。  

写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件: >>> f = open('test.txt', 'w') # 若是'wb'就表示写二进制文件 >>> f.write('Hello, world!') >>> f.close() 注意:'w'这个模式是酱紫:如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。所以若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式。 参考文献:https://www.cnblogs.com/zywscq/p/5441145.html 1.2 文件对象的操作方法 python文件操作https://www.cnblogs.com/helloworld899/p/7538401.html Python实现文件的操作: 读写一个文件之前需要打开它: fileobj = open(filename, mode) open()调用参数的解释: * fileobj是open()返回的文件对象;  * filename是该文件的字符串名; * mode是指明文件类型和操作的字符串 mode : * r 只读模式(默认) * w 只写模式(不可读,不存在则新创建;存在则重写新内容;) * a 追加模式(可读,不存在则新创建;存在则只追加内容;)   "+" 表示同时读写某个文件: * r+ 可读写文件(可读;可写;可追加) * w+ 写读 * a+ 同a   * b代表二进制文件   eg:写文件 conten = '''Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested.''' fout = open("file.txt", "w") fout.write(conten) fout.close()   如果源字符串比较大,可以将数据进行分块,直到所有字符被写入: fout = open("file.txt", "w") size = len(conten) offset = 0 chunk = 100 while True: if offset > size: break fout.write(conten[offset:offset+chunk]) offset += chunk fout.close() ***使用read()、readline()、readlines()读文件本文件: 不带参数的read()函数一次读入文件的所有内容,在读入文件时注意,2G的文件会用到相同大小的内存 fin = open("file.txt", "r") ct = fin.read() fin.close() print(ct) 可以设置最大的读入字符数限制read()函数一次返回的大小。 ct = "" chunk = 100 fin = open("file.txt", "r") while True: fragment = fin.read(chunk) if not fragment: break ct += fragment fin.close() print(ct)   readline()每次读入文件的一行,通过追加每一行拼接成原来的字符串: ct = "" fin = open("file.txt", "r") while True: line = fin.readline() if not line: break ct += line fin.close() print(ct) 或 fin = open("file.txt", "r") while True: line = fin.readline() if not line: break print(line,end="") fin.close() 当文件读取结束后,readline()、read()同样会返回空字符串,即被判为False.   函数readlines()调用时每次读取一行,并返回单行字符串的列表: fin = open("file.txt", "r") lines = fin.readlines() fin.close() for line in lines: print(line, end="")   使用with自动关闭文件: with open("file.txt", "r") as fin: while True: line = fin.readline() if not line: break print(line, end="") *** 使用seek()改变位置  函数tell()返回距离文件开始处的字节偏移量,函数seek()允许跳转到文件其它字节偏移量的位置,即可以不用从头读取文件的每一个字节,直接跳到指定的位置 fin = open("file.txt", "r") fin.tell() print(fin.read()) fin.seek(10) print(fin.read())   1.3 读CSV
​ import csv ​ 打开文件,用 with open(“./csv/文件名.csv”,”r”) as csvfile: ​ 读取csv文件,返回的是迭代类型 read = csv.reader(csvfile) ​ for i in read: print(i)
  写CSV

利用 xlrd 模块操作 Excel

利用 xlwt 模块 写入excel文件

  2. OS模快 https://blog.51cto.com/11555417/2095436 OS模块是python内建模块,主要是对大量文件和大量路径进行操作 3. datatime 模快 datetime模块用于是date和time模块的合集,datetime有两个常量,MAXYEAR和MINYEAR,分别是9999和1. datetime模块定义了5个类,分别是 1.datetime.date:表示日期的类 2.datetime.datetime:表示日期时间的类 3.datetime.time:表示时间的类 4.datetime.timedelta:表示时间间隔,即两个时间点的间隔 5.datetime.tzinfo:时区的相关信息 4. 类和对象 这部分内容需要补充,先占位 5. 正则表达 这部分内容需要补充,先占位 6. re 模快 这部分内容需要补充,先占位 7. http请求

python urllib包

python内置了urllib包来处理http请求,主要是一下几个模块: 名称 功能 urllib.error 处理异常模块 urllib.parse 解析url模块 urllib.request 请求url模块 urllib.response 响应模块 urllib.robotparser 解析 robots.txt文件 主要方法
  • urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None)
    打开url或者对象
后记:这部分的内容需要补充学习