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

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()。

注意:这三种方法是把每行末尾的'\n'也读进来了,它并不会默认的把'\n'去掉,需要我们手动去掉。

 

写文件

写文件和读文件是一样的,唯一区别是调用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或者对象

后记:这部分的内容需要补充学习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值