2-1-01 文件操作 - 打开关闭和读写
使用模块
# 下载文件等
import requests
1. 读文件
1.1 分类
-
读文本文件
-
读图片等非文本内容文件
1.2 路径
相对路径:'info.txt'
绝对路径:'/Users/wupeiqi/PycharmProjects/luffyCourse/day09/info.txt'

1.3 模式
mode='rb' rb,表示读取文件原始的二进制(r, 读 read;b, 二进制 binary;)
mode='rt' 读取的是文本内容
1.4 步骤
1.4.1 rb模式
字节类型 -> 字符串类型 (手动转换)
1) 读文本文件
# 1.打开文件
file_object = open('info.txt', mode='rb')
# 2.读取文件内容,并赋值给data
data = file_object.read()
# 3.关闭文件
file_object.close()
# 这个时候读取字节类型
print(data) # b'alex-123\n\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90-123'
# 把字节类型变成字符串类型
text = data.decode("utf-8")
print(text)
2) 读图片等非文本内容文件 : 字节类型
file_object = open('a1.png', mode='rb')
data = file_object.read()
file_object.close()
print(data) # \x91\xf6\xf2\x83\x8aQFfv\x8b7\xcc\xed\xc3}\x7fT\x9d{.3.\xf1{\xe8\...
1.4.2 rt 模式
字节类型 -> 字符串类型(自动转换)
encoding='utf-8' 自动转换
# 1.打开文件**并自动转换成字符串类型**
file_object = open('info.txt', mode='rt', encoding='utf-8')
# 2.读取文件内容,并赋值给data
data = file_object.read()
# 3.关闭文件
file_object.close()
print(data)
1.5 注意事项
1.5.1 路径
-
相对路径:注意你的程序在哪里运行?
- 注意现在的程序在哪个目录,执行的文件在哪个路径
-
绝对路径
# 1.打开文件
file_object = open('/Users/wupeiqi/PycharmProjects/luffyCourse/day09/info.txt', mode='rt', encoding='utf-8')
# 2.读取文件内容,并赋值给data
data = file_object.read()
# 3.关闭文件
file_object.close()
- win系统中写绝对路径容易出问题:\和后面字符可能出来新的含义,两种解决方案
1)斜杠用双斜杠表示:
file_object = open('C:\new\info.txt', mode='rt', encoding='utf-8')
2) 在路径前面加上r
file_object = open(r'C:\new\info.txt', mode='rt', encoding='utf-8')
1.5.2 读文件
a. 读文件时,文件不存在程序会报错。

Traceback (most recent call last):
File "/Users/wupeiqi/PycharmProjects/luffyCourse/day09/2.读文件.py", line 2, in <module>
file_object = open('infower.txt', mode='rt', encoding='utf-8')
FileNotFoundError: [Errno 2] No such file or directory: 'infower.txt'
b. 判断路径是否存在?
- 定义:
import os ## 内置模块 os
os.path.exists(file_path) ## 返回时,存在返回True,不存在返回False
- 使用方法:
#内置模块 os
import os
file_path = "/Users/wupeiqi/PycharmProjects/luffyCourse/day09/info.txt"
# 传入一个路径
exists = os.path.exists(file_path)
#返回时,存在返回True,不存在返回False
if exists:
# 1.打开文件
file_object = open('infower.txt', mode='rt', encoding='utf-8')
# 2.读取文件内容,并赋值给data
data = file_object.read()
# 3.关闭文件
file_object.close()
print(data)
else:
print("文件不存在")
2. 写文件
# 读文件
f1 = open('a1.png',mode='rb')
content = f1.read()
f1.close()
# 写入文件,相当于`**复制**`
f2 = open('a2.png',mode='wb')
f2.write(content)
f2.close()
注意:图片只适用编码二进制模式,也就是 rb 或者 wb
2.1 分类
-
读文本文件
-
读图片等非文本内容文件
2.2 步骤-文本文件
2.2.1 wb模式
2.2.1.1 打开文件
模式:wb w:写 b:二进制 写成二进制
```python
#1.打开文件
file_object = open("t1.txt", mode='wb')
**2.2.1.2 写入内容**
注意:因为打开的是wb,所以写入的是二进制,也就是转化成字类型
```python
file_object.write( "武沛齐".encode("utf-8") )
2.2.1.3 文件关闭
file_object.close()
范例
# 1.打开文件
# 路径:t1.txt
# 模式:wb(要求写入的内容需要是字节类型)
file_object = open("t1.txt", mode='wb')
# 2.写入内容
file_object.write( "武沛齐".encode("utf-8") )
# 3.文件关闭
file_object.close()
2.2.2 wt模式
wt :w 写 t 文本
file_object = open("t1.txt", mode='wt', encoding='utf-8')
file_object.write("武沛齐")
file_object.close()
2.3 步骤-图片
# 读文件
f1 = open('a1.png',mode='rb')
content = f1.read()
f1.close()
# 写入文件,相当于`**复制**`
f2 = open('a2.png',mode='wb')
f2.write(content)
f2.close()
注意:图片只适用编码二进制模式,也就是 rb 或者 wb
2.4. 基础案例
案例1:用户注册
user = input("请输入用户名:")
pwd = input("请输入密码:")
data = "{}-{}".format(user, pwd)
file_object = open("files/info.txt", mode='wt', encoding='utf-8')
file_object.write(data)
file_object.close()
注意:如果没有info.txt文件,会自动添加该文件
案例2:多用户注册
注意:w写入文件,先清空文件;再在文件中写入内容,每次打开都会清空一次文件*
# w写入文件,先清空文件;再在文件中写入内容。
file_object = open("files/info.txt", mode='wt', encoding='utf-8')
while True:
user = input("请输入用户名:")
if user.upper() == "Q":
break
pwd = input("请输入密码:")
#\n 换行,加上换行后,相当于回车
data = "{}-{}\n".format(user, pwd)
file_object.write(data)
file_object.close()

2.5. 小高级案例:(超前)
案例1:去网上下载一点文本,文本信息写入文件。
1. 下载第三方模块
利用Python想某个网址发送请求并获取结果(利用第三方的模块)
# pip 是python自带的安装工具
# install 安装
# requests 第三方模块名字

注意1:
- 在pycharm中左下角的Termainal中输入 pip install requests,该文件放在:D:\Python\Scripts的pip3.exe
- 如果没有找到该模块的安装目录而导致上方报错,这这样输入:
D:\Python\Scripts\pip3 install requests

注意2:
如果安装多个python,则指定某个python去安装
pip3.9 install requests

2. 使用第三方模块
import requests
res = requests.get(url="网址")
print(res)
import requests
res = requests.get(
url="https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&sort=recommend&page_limit=20&page_start=20",
# headers 输入一个用户信息`User-Agent`----相当于伪造一个用户(爬虫)
headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
)
# 网络传输的原始二进制信息(bytes)
# res.content
file_object = open('files/log1.txt', mode='wb')
file_object.write(res.content)
file_object.close()
案例2:去网上下载一张图片,图片写入本地文件。
import requests
res = requests.get(
url="https://hbimg.huabanimg.com/c7e1461e4b15735fbe625c4dc85bd19904d96daf6de9fb-tosv1r_fw1200",
headers={
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36"
}
)
# 网络传输的原始二进制信息(bytes)
# res.content
file_object = open('files/美女.png', mode='wb')
file_object.write(res.content)
file_object.close()
2.6 注意事项
- 路径
- 绝对路径
- 相对路径
- 文件不存在时,w模式会新建然后再写入内容;文件存在时,w模式会清空文件再写入内容。
3. 文件打开模式
上文我们基于文件操作基本实现了读、写的功能,其中涉及的文件操作模式:rt、rb、wt、wb,其实在文件操作中还有其他的很多模式。
3.1 模式介绍
注意:r 表示读 wxa 都是表示写
# 这几种模式不能独立存在,必须指定是文本还是二进制模式,也就是b
'r' # 读
'w' # 写,清空文件往里面写,文件存在会覆盖,不存在会创建
'x' # 写,文件不存在帮你创建并且写入,如果文件存在就报错,不会任何操作
'a' # 写,打开文件往尾部追加,不会给你清空
'b' # 底层二进制数据,必须是以字节模式存在
't' # 文件存在,是将底层的二进制转换成字符串的模式存在,而得到字符串的数据
'+' # 即可读也可写
3.2 关于文件的打开模式常见应用有:
- 只读:
r、rt、rb(用)
1. r 默认相当于rt #读到字符串的数据
2. 存在,读
3. 不存在,报错
- 只写:
w、wt、wb(用)
1. w 默认相当于rt #读到字符串的数据
2. 存在,清空再写
3. 不存在,创建再写
- 只写:
x、xt、xb【很少使用】
1. x 默认相当于rt #读到字符串的数据
2. 存在,报错
3. 不存在,创建再写。
- 只写:
a、at、ab【尾部追加】(用)
1. x 默认相当于rt #读到字符串的数据
2. 存在,尾部追加
3. 不存在,创建再写。
- 读写
- r+、rt+、rb+ 默认光标位置:起始位置
file_object = open('info.txt', mode='rt+')
# 读取内容
data = file_object.read()
print(data)
# 写入内容
file_object.write("你好呀")
file_object.close()
#注意:要先读后写,因为开始进入后光标位置放在起始位置,如果先写就会从一开始写入,如果先读,那就是先读取数据,光标会移动到最后,再去写入可以添加
- w+、wt+、wb+,默认光标位置:起始位置(清空文件),每次都会清空文件
#将光标位置重置到起始
file_object.seek(0)
- x+、xt+、xb+,默认光标位置:起始位置(新文件)【很少用】
- a+、at+、ab+,默认光标位置:末尾【重点】
可以根据光标位置去记,用的最多的是a。读写模式用的不多,最多的是上面的单独的
3.3 多用户注册案例:
# 每次先打开文件,然后去循环写信息
file_object = open('files/account.txt', mode='a')
while True:
user = input("用户名:")
if user.upper() == "Q":
break
pwd = input("密码:")
data = "{}-{}\n".format(user, pwd)
file_object.write(data)
# 最后循环结束在关闭
file_object.close()
4. 常见功能
1. read,读【常用】
- 读所有---默认
# mode = r / rt
f = open('info.txt',mode = 'r',encouding = 'itf-8')
data = f.read()
f.close()
# mode = rb 二进制
f = open('info.txt',mode = 'rb')
- 读n个字符(字节)【不多】
# mode = r / rt 使用文本操作的时候用的多一些
f = open('info.txt',mode = 'r',encouding = 'itf-8')
# 读1个字符
data = f.read(1)
f.close()
print()#武 字符串类型
# mode = rb 二进制 使用文件上传或断点上传的时候用的比较多
f = open('info.txt', mode='rb')
# 读1个字节
data = f.read(3)
f.close()
print(data, type(data)) # b'\xe6\xad\xa6' <class 'bytes'>
f = open('info.txt', mode='rb')
# 读1个字节
chunk1 = f.read(3)
chunk2 = f.read(3)
chunk3 = f.read(1)
print(chunk1,chunk2,chunk3)
f.close()
2. readline,读一行数据
# 读的第一二行数据
f = open('info.txt', mode='r', encoding='utf-8')
v1 = f.readline()
print(v1)
v2 = f.readline()
print(v2)
f.close()
# 读的每次都是第一行数据
f = open('info.txt', mode='r', encoding='utf-8')
v1 = f.readline()
print(v1)
f.close()
f = open('info.txt', mode='r', encoding='utf-8')
v2 = f.readline()
print(v2)
f.close()
- 文件过大,可以用readline来每次读取一行,节省时间和内存
- 文件一行过多时,可以用read来读取前几个字节或字符,节省时间和内存
3. readlines,读所有行
每行作业列表的一个元素
data_list = f.readlines() # 最终生成一个列表,每个元素是一行的数据

4. 循环,读大文件(readline加强版)****【常用】
f = open('info.txt', mode='r', encoding='utf-8')
for line in f:
print(line.strip())
f.close()
5. write,写
f.write("武沛齐")
6. flush,刷到硬盘
f = open('info.txt', mode='a',encoding='utf-8')
while True:
# 不是写到了硬盘,而是写在缓冲区,系统会将缓冲区的内容刷到硬盘。【时间不确定】
f.write("武沛齐")
# flush 是立即将缓冲区的内容刷到硬盘中
f.flush()
f.close()
7. 移动光标位置(字节)
# 移动到指定字节的位置
f.seek(3)
# 移动到第三个字节,utf-8是一个汉字三个字节
注意:
- 在a模式下,调用write在文件中写入内容时,永远只能将内容写入到尾部,不会写到光标的位置。
- 可能会出现乱码的情况
8. 获取当前光标位置
f = open('info.txt', mode='r', encoding='utf-8')
# tell获取的永远是字节的位置
p1 = f.tell()
print(p1) # 0
f.read(3) # 读3个字符 3*3=9字节
p2 = f.tell()
print(p2) # 9
f.close()
f = open('info.txt', mode='rb')
p1 = f.tell()
print(p1) # 0
f.read(3) # 读3个字节
p2 = f.tell()
print(p2) # 3
f.close()
5. 上下文管理
之前对文件进行操作时,每次都要打开和关闭文件,比较繁琐且容易忘记关闭文件。
以后再进行文件操作时,推荐大家使用with上下文管理,它可以自动实现关闭文件。
with open("xxxx.txt", mode='rb') as file_object:
data = file_object.read()
print(data)
在Python 2.7 后,with又支持同时对多个文件的上下文进行管理,即:
with open("xxxx.txt", mode='rb') as f1, open("xxxx.txt", mode='rb') as f2:
pass
6. 练习
1.补充代码:实现下载视频并保存到本地
import requests
res = requests.get( url="https://f.video.weibocdn.com/000pTZJLgx07IQgaH7HW010412066BJV0E030.mp4?label=mp4_720p&template=1280x720.25.0&trans_finger=1f0da16358befad33323e3a1b7f95fc9&media_id=4583105541898354&tp=8x8A3El:YTkl0eM8&us=0&ori=1&bf=2&ot=h&ps=3lckmu&uid=3ZoTIp&ab=3915-g1,966-g1,3370-g1,3601-g0,3601-g0,3601-g0,1493-g0,1192-g0,1191-g0,1258-g0&Expires=1608204895&ssig=NdYpDIEXSS&KID=unistore,video",
headers={ "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36" })
# 视频的文件内容
with open('nba.mp4',mode='wb') as file_object:
file_object.write(res.content)
2. 日志分析,计算某用户223.73.89.192访问次数。日志文件如下:access.log
49.89.167.91 - - [17/Dec/2020:03:43:50 +0800] "GET /wiki/detail/3/40 HTTP/1.1" 301 0 "-" "Mozilla/5.0(Linux;Android 5.1.1;OPPO A33 Build/LMY47V;wv) AppleWebKit/537.36(KHTML,link Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 LieBaoFast/4.51.3" "-"
49.89.167.91 - - [17/Dec/2020:03:44:11 +0800] "GET /wiki/detail/3/40/ HTTP/1.1" 200 8033 "-" "Mozilla/5.0(Linux;Android 5.1.1;OPPO A33 Build/LMY47V;wv) AppleWebKit/537.36(KHTML,link Gecko) Version/4.0 Chrome/43.0.2357.121 Mobile Safari/537.36 LieBaoFast/4.51.3" "-"
203.208.60.66 - - [17/Dec/2020:03:47:58 +0800] "GET /media/uploads/2019/11/17/pic/s1.png HTTP/1.1" 200 710728 "-" "Googlebot-Image/1.0" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /wiki/detail/3/40/ HTTP/1.1" 200 8033 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/stark/plugins/font-awesome/css/font-awesome.css HTTP/1.1" 200 37414 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/stark/plugins/bootstrap/css/bootstrap.css HTTP/1.1" 200 146010 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/web/css/commons.css HTTP/1.1" 200 3674 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/mdeditor/editormd/css/editormd.preview.css HTTP/1.1" 200 60230 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/stark/js/jquery-3.3.1.min.js HTTP/1.1" 200 86927 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/stark/plugins/bootstrap/js/bootstrap.min.js HTTP/1.1" 200 37045 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:26 +0800] "GET /static/mdeditor/editormd/lib/marked.min.js HTTP/1.1" 200 19608 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:27 +0800] "GET /static/mdeditor/editormd/lib/prettify.min.js HTTP/1.1" 200 17973 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:27 +0800] "GET /static/mdeditor/editormd/fonts/fontawesome-webfont.woff2?v=4.3.0 HTTP/1.1" 200 56780 "https://pythonav.com/static/mdeditor/editormd/css/editormd.preview.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:27 +0800] "GET /static/mdeditor/editormd/editormd.js HTTP/1.1" 200 163262 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:28 +0800] "GET /static/mdeditor/mdeditor-preview-init.js HTTP/1.1" 200 261 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:29 +0800] "GET /static/stark/plugins/font-awesome/fonts/fontawesome-webfont.woff2?v=4.7.0 HTTP/1.1" 200 77160 "https://pythonav.com/static/stark/plugins/font-awesome/css/font-awesome.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
223.73.89.192 - - [17/Dec/2020:03:48:29 +0800] "GET /media/uploads/2019/02/22/Gobook/_book/ssl2.png HTTP/1.1" 200 203535 "https://pythonav.com/wiki/detail/3/40/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36 Edg/87.0.664.60" "-"
ip = '223.73.89.192'
total_count = 0
with open('./access.log',mode= 'r',encoding='utf-8') as file:
for line in file:
if not line.startswith(ip):
continue
total_count += 1
print(total_count)
3. 日志分析升级,计算所有用户的访问次数。
user_dict = {}
with open('./access.log',mode = 'rt',encoding='utf-8') as file:
for line in file:
user_ip = line.split(" ")[0]
if user_ip in user_dict:
user_dict[user_ip] += 1
else:
user_dict[user_ip] = 1
print(user_dict) #{'49.89.167.91': 2, '203.208.60.66': 1, '223.73.89.192': 14}
4. 筛选出股票 当前价大于 20 的所有股票数据。
股票代码,股票名称,当前价,涨跌额,涨跌幅,年初至今,成交量,成交额,换手率,市盈率(TTM),股息率,市值
SH601778,N晶科,6.29,+1.92,+43.94%,+43.94%,259.66万,1625.52万,0.44%,22.32,-,173.95亿
SH688566,吉贝尔,52.66,+6.96,+15.23%,+122.29%,1626.58万,8.09亿,42.29%,89.34,-,98.44亿
SH688268,华特气体,88.80,+11.72,+15.20%,+102.51%,622.60万,5.13亿,22.87%,150.47,-,106.56亿
SH600734,实达集团,2.60,+0.24,+10.17%,-61.71%,1340.27万,3391.14万,2.58%,亏损,0.00%,16.18亿
SH900957,凌云B股,0.36,+0.033,+10.09%,-35.25%,119.15万,42.10万,0.65%,44.65,0.00%,1.26亿
SZ000584,哈工智能,6.01,+0.55,+10.07%,-4.15%,2610.86万,1.53亿,4.36%,199.33,0.26%,36.86亿
SH600599,熊猫金控,6.78,+0.62,+10.06%,-35.55%,599.64万,3900.23万,3.61%,亏损,0.00%,11.25亿
SH600520,文一科技,8.21,+0.75,+10.05%,-24.05%,552.34万,4464.69万,3.49%,亏损,0.00%,13.01亿
SH603682,锦和商业,11.73,+1.07,+10.04%,+48.29%,2746.63万,3.15亿,29.06%,29.62,-,55.42亿
SZ300831,派瑞股份,12.27,+1.12,+10.04%,+208.29%,25.38万,311.41万,0.32%,60.59,-,39.26亿
with open('./stock.txt',mode='r',encoding='utf-8') as file:
# 1.跳过第一行
file.readline()
#2.接着往下读
for line in file:
text = line.split(',')[2]
price = float(text)
if price > 20:
print(line.strip())
5. 根据要求修改文件的内容,原文件内容如下:ha.conf
global
log 127.0.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
defaults
log global
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option dontlognull
listen stats :8888
stats enable
stats uri /admin
stats auth admin:1234
frontend oldboy.org
bind 0.0.0.0:80
option httplog
option httpclose
option forwardfor
log global
acl www hdr_reg(host) -i www.luffycity.org
use_backend www.luffycity.com if www
backend www.luffycity.com
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
...
请将文件中的 luffycity修改为 pythonav 。
'''
思路:
1. 文件读到内存,在通过replace(适用于小文件,不适用于大文件)
2. 改个位置读文件的内容,遇到`luffycity`将其替换成 `pythonav` ---如果字符数量一样可以,不然不行
3. 同时打开两个文件,读+写(适用于小文件,也适用于大文件)
'''
# 同时打开两个文件,读+写(适用于小文件,也适用于大文件)
with open("./ha.conf", mode='r', encoding='utf-8') as read_file, open("./new.conf", mode='w',
encoding='utf-8') as write_lift:
for line in read_file:
new_list = line.replace("luffycity", "pythonav")
write_lift.write(new_list)
# 重命名
import shutil
shutil.move("./new_list","./ha.conf")

浙公网安备 33010602011771号