【Python学习笔记】File IO
一、作用
- 持久化存储
- 分析处理日志
1.操作流程
- 创建文件对象/打开文件
open(file, mode='r')
- 读写内容
- 关闭文件
2.创建文件对象
open(file, mode='r')
- 读取模式:
r
字符串rb
Bytes
- 写入模式
r+
可读可写
- 追加模式
a
- 创建文件
w
创建文件wb
Bytes
- 读取模式:
二、读取文件内容
1.read(n)
- 默认读取文件所有内容
- 按字符进行读取
file_name = r"E:\Python课程\venv\fileIO\file.txt"
fobj = open(file_name, mode="r")
data_01 = fobj.read()
print(data_01)
fobj.close()
666666666 #读取文件内容
dhahdjajh
指定读取行
file_name = r"E:\Python课程\venv\fileIO\file.txt"
fobj = open(file_name, mode="r")
data_01 = fobj.read(4)
print(data_01)
data_02 = fobj.read(2)
print(data_02)
fobj.close()
6666
66
2.遍历文件
file_name = r"E:\Python课程\venv\fileIO\file.txt"
fobj = open(file_name, mode="r")
for line in fobj:
print("---> %s" % line)
fobj.close()
---> 666666666
---> dhahdjajh
三、写入模式
一般用于创建新文件
fobj = open(file_name, mode="a")
fobj.write("shell\n")
fobj.write("python\n")
fobj.seek(0, 0)
fobj.write("Golang")
fobj.close()
四、读写模式
file_name = r"E:\Python课程\venv\fileIO\file.txt"
fobj = open(file_name, mode="r+")
data_01 = fobj.read(3)
print(data_01)
# 覆盖后续内容
fobj.seek(2,0)
fobj.write("Window")
fobj.close()
66Window
五、追加模式
file_name = r"E:\Python课程\venv\fileIO\file.txt"
fobj = open(file_name, mode="a")
fobj.write("shell\n")
fobj.write("python\n")
fobj.seek(0, 0)
fobj.write("Golang")
fobj.close()
Golangshell
python
Golang
六、创建文件对象另外一种写法
该操作会自动关闭打开的文件
with open(file, mode="r") as 文件对象:
文件内容操作
文件内容操作
例子:统计网站访问日志
file = r"E:\Python课程\venv\fileIO\www.wangshengjj.work.log"
clinetip = {}
clientip_list = []
with open(file, mode="r") as fobj:
for i in fobj:
clientip = i.split()[0]
clientip_list.append(clientip)
for i in set(clientip_list):
print("IP地址:%s 访问次数:%s" % (i,clientip_list.count(i)))
IP地址:116.179.37.47 访问次数:15
IP地址:60.188.9.104 访问次数:2
IP地址:114.119.145.151 访问次数:1
IP地址:60.188.9.93 访问次数:1
IP地址:113.132.27.70 访问次数:1
IP地址:162.158.170.206 访问次数:1
IP地址:60.188.10.22 访问次数:1
IP地址:100.26.127.17 访问次数:5
IP地址:39.173.105.197 访问次数:6
IP地址:172.71.254.205 访问次数:2
IP地址:101.67.29.177 访问次数:2
七、移动光标位置
- 文件需要以rb模式打开
seek(offset, whence)
offset
偏移量- 正数 光标向后移动
- 负数 光标向前移动
whence
0
先将光标移动到文件开始处1
保持光标当前位置不动2
先将光标移动到文件末尾处
file_name = r"D:\project0805\files\test01.txt"
fobj = open(file_name, mode="rb")
data_01 = fobj.read()
print(data_01)
print("光标位置: %s" % fobj.tell())
# 向前移动3个字符
fobj.seek(-3,2)
print("光标位置: %s" % fobj.tell())
data_02 = fobj.read()
print(data_02)
# 将光标移动文件开始处的后2个字符
fobj.seek(2,0)
print("光标位置: %s" % fobj.tell())
data_03 = fobj.read(3)
print(data_03)
fobj.close()