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或者对象
后记:这部分的内容需要补充学习