Python之文件处理
python进行文件处理其实也很简单,无法就那么几个要点。
1、打开文件
2、读取文件
3、写入文件
围绕上面这三个要点展开了许多的方法,调用方法进行各种花样的文件处理。听起来仿佛很牛逼,实际上没有多少花头,深刻理解了也就自然而然的掌握了。
例如先自己创建一个文件,假设在D:\python-project\test.txt
下面一个一个的来说明上面三个知识点以及相对应的方法:
打开读取文件
-- 打开文件就是open方法,但是打开文件的目的是读取文件内容或者写入内容。
读取的方法:
1> r 只读
2> r+ 读写
my_file = 'D:\python-project\test.txt'
f = open('D:\python-project\test.txt','r',encoding='utf-8')
print(f)
输出结果:<_io.TextIOWrapper name='D:\\python-project\\test.txt' mode='r' encoding='cp936'>
看到了吗?上面这个结果是什么呀?拿到的f实际上是一个文件句柄,有了这个才可以调用文件的各种方法。打开文件并读取还有另外一种写法:
with open('D:\python-project\test.txt','r',encoding='utf-8') as f:
pass
--其中encoding='utf-8'可以不写,默认好像是gbk
读取文件的四个方法:
(1)f.read()
把文件中的所有内容全部读取出来,返回的是字符串类型。
(2)f.readline()
按照行数把文件内容读取出来,一次只读取一行,类似于next()方法,返回的是字符串类型。
(3)f.readlines()
按照每一行读取,并把文件中所有内容读出来后存放在表格中,返回的是一个列表。
(4)f.readable()
判断是否有可读权限,如果有可读权限,则返回True,否则返回False。
写文件
f = open('D:\python-project\test.txt','w')
或
with open('D:\python-project\test.txt','w') as f:
pass
写入文件的三个方法:
(1)f.write('data')
只能添加字符串,不可能添加序列,如列表
(2)f.writelines(['data1','data2'])
可以添加字符串,也可以添加序列,但不能是数字序列。
(3)f.writable()
判断是否有可写权限,如果有可写权限,则返回True,否则返回False。
下面举个例子来进行文件处理:
需求:有一个http.conf文件,内容如下:
test this is a test file
127.0.0.1 weight 200
127.0.0.2 weight 300
127.0.0.3 weight 300
127.0.0.4 weight 300
test this is a test file
192.168.0.1 weight 200
192.168.0.2 weight 300
192.168.0.3 weight 300
192.168.0.4 weight 300
warpper this is result
192.168.0.1 weight 200
192.168.0.2 weight 300
192.168.0.3 weight 300
192.168.0.4 weight 300
warpper wrong
10.10.0.1 weight 200
10.10.0.2 weight 300
10.10.0.3 weight 300
10.10.0.4 weight 300
现在要求获取warpper this is result下面的四行IP信息,打印出来并存放到一个列表中:
192.168.0.1 weight 200
192.168.0.2 weight 300
192.168.0.3 weight 300
192.168.0.4 weight 300
程序代码如下:
点击查看代码
def featch(data):
tag = False
message = " ".join(['warpper',data])
print(message)
with open('abc.txt','r',encoding='utf-8') as f:
ret = []
for line in f:
if line == message:
tag = True
continue
if line.startswith('warpper') and tag == True:
break
if tag:
print(line)
ret.append(line)
# else:
# print('你要找的内容不存在')
return ret
def add(data):
pass
def update(data):
pass
def delete(data):
pass
if __name__ == '__main__':
msg = '''
1:查看
2:增加
3:修改
4:删除
5:退出
'''
while True:
msg_dic = {
'1':featch,
'2':add,
'3':update,
'4':delete
}
print(msg)
choice = input('请输入你的选择:')
data = input('请输入你要查找的内容:')
if not choice:continue
if choice == '5':break
msg_dic[choice](data)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架