python语言(三)文件修改、函数、json操作、监控日志代码、高效读取文件
f = open('a.txt','a') # "a" 如果源文件不在,会自动创建 f.write('abc') result = f.read() print(result) f.close() # r read 能读,不能写,打开不存在的文件会报错 # w write 能写,不能读 # a add 能写,不会清空以前的内容,不能读
.png)
模式
|
说明
|
r
|
read 能读,不能写,打开不存在的文件会报错
|
w
|
write 能写,不能读
|
a
|
add 能写,不会清空以前的内容,不能读
|
result = f.read() print(result) print('read',f.read()) print('readlines',f.readlines()) # 把文件每一行的内容都放到list里面 print('readline',f.readline()) # 只读一行 f.close()
# 文件指针 stus = ['xiaohei','xiaobai','xianglan'] f = open('b.txt','w') f.write('sdfsdf\n') # 只能写字符串 f.writelines(stus) # 可以循环传入list、集合等 f.close()
.png)
.png)
模式
|
|
说明
|
r
|
读
|
不能写,打开不存在的文件会报错
|
w
|
写
|
不能读
|
a
|
追加
|
不删除原来内容,新增新的内容
|
r+ |
读写模式
|
能读能写,打开不存在的文件会报错
|
w+
|
写读模式
|
能读能写,但是会清空以前的东西
|
a+
|
追加模式
|
能读能写,不会清空以前的东西
|
f = open('a.txt','r+',encoding='utf-8') # print(f.read()) f.write('AAAAA5') # 'r+'模式能读能写 f.close()
.png)
.png)
f = open('a.txt','w+',encoding='utf-8') print(f.read()) f.write('w+模式') print(f.read()) f.close()
.png)
f = open('a.txt','a+',encoding='utf-8') f.seek(0) # 移动文件指针 print(f.read()) f.write('a+模式') f.close()
.png)
f = open('access.log',encoding='utf-8') for line in f: print('每一行的内容:',line) # 每次只读一行内容,直接循环
.png)
l = [] d = {'192.168.1.1':1,'192.168.1.2':5} import time point = 0 # 第一次打开文件,把指针放在最前面 while True: ips = {} # 存放所有的ip地址以及它出现的次数 f = open('access.log') f.seek(point) for line in f: if line.strip() != '': # 判断不为空行的时候 ip = line.split()[0] if ip not in ips: ips[ip]=1 else: ips[ip] = ips[ip] + 1 point = f.tell() # 当前文件指针的位置 print(ips) for ip in ips: if ips.get(ip) >= 100: print('超过100次的ip是:%s' %ip) time.sleep(60)
.png)
f = open('a.txt','a+',encoding='utf-8') f.seek(0) result = f.read() new_result = result.replace('abc','ABC') f.seek(0) f.truncate() # 清空文件内容 f.write(new_result) f.close()
.png)
import os f1 = open('a.txt',encoding='utf-8') f2 = open('a2.txt','w',encoding='utf-8') for line in f1: new_line = line.replace(') f2.write(new_line) f1.close() f2.close() os.remove('a.txt') # 把原来文件删除 os.rename('a2.txt','a.txt') # 把a2.txt 替换从a.txt文件
.png)
with open('a.txt',encoding='utf-8') as f1,open('a2.txt','w',encoding='utf-8') as f2: for line in f1: new_line = line.replace(') f2.write(new_line) f1.close() f2.close() os.remove('a.txt') os.rename('a2.txt','a.txt')
.png)
# 布尔 a = 1 b = 2 s = '' l = [] d = {} s1 = set() t = () username = input('user:').strip() if username: print('欢迎登录%s' %username) else: print('用户名不能为空')
.png)
d = {"name":"abc"} import json import pprint json_str = json.dumps(d) # 就是把字典/list 转成字符串(json) json_str2 = '{"name": "abc","age":"19"}' dic = json.loads(json_str2) # 把字符串(json)转成字典 pprint.pprint(dic) pprint.pprint(json_str) # json串就是字符串
.png)
d = {","age":18} with open('users.txt','w',encoding='utf-8') as f: json_d = json.dumps(d) f.write(json_d)
with open('users.txt','r',encoding='utf-8') as f: result = f.read() json.loads(result)
d = { "id":314, "name":"化合物", "sex":"女", "age":19, "addr":"上海市浦东新区", "grade":"摩羯座", ", "gold":405 } with open('users.json','w',encoding='utf-8') as f: # 要显示变颜色,就在文件名字后面加上“.json” json_d = json.dumps(d,ensure_ascii=False,indent = 4) f.write(json_d) # 要显示中文就加上“ensure_ascii=False” # 要显示格式化 就用“indent = 4 (控制有几个缩进)”
.png)
.png)
d = { "id":314, "name":"化合物", "sex":"女", "age":19, "addr":"上海市浦东新区", "grade":"摩羯座", ", "gold":405 } with open('users.json','w',encoding='utf-8') as f: # 要显示变颜色,就在文件名字后面加上“.json” json_d = json.dumps(d,ensure_ascii=False,indent = 4) f.write(json_d) # 要显示中文就加上“ensure_ascii=False” # 要显示格式化 就用“indent = 4 (控制有几个缩进)” d = { "id":314, "name":"化合物", "sex":"女", "age":19, "addr":"上海市浦东新区", "grade":"摩羯座", ", "gold":405 } f = open('wjq.json','w',encoding='utf-8') json.dump(d,f,ensure_ascii=False,indent=4) # dumps 1、传字典;2、写入 # dump 直接写入文件 f = open('wjq.json',encoding='utf-8') dic = json.load(f) print(dic) # load\loads 待s的是操作字符串,不带s的是操作文件
.png)
.png)
7、函数
定义函数
1、意义:函数是实现某个功能的一些代码,提高代码的复用性。
2、定义:用def关键字定义函数,
3、函数组成:函数由函数名、形参、函数体、调用函数(里面会有函数体)组成
4、要使用函数,必须要调用它
def say_hello(msg): print(msg)
say_hello('abc') # 调用函数
.png)
# 定义一个函数,告诉我文件名和内容 def write_file(filename,content): f = open(filename, 'w') f.write(content) f.close() write_file('wjq.json','sdfsdfsdf')
# 函数里面调用的变量都是局部变量,只在函数里面可以用,出了函数就不可以用 def read_file(file_name): with open(file_name,encoding='utf-8') as fr: result = fr.read() # 只能在函数里面的定义,外面用不了 return result # 用return返回的日志,外面就可以用了 content = read_file('users.txt') print(content)
.png)
# 1、函数不写返回值的情况下返回的是什么 # 2、返回多个值的时候,返回的是什么 import datetime def get_today_data(): a = 1 b = 2 c = 3 print('abc') print('abc') print('abc') return a,b,c result = get_today_data() q = get_today_data() print(q) print(result)
.png)
# 1、必须只有一个小数点 # 2、小数点的左边必须是整数,小数点的右边必须是正整数 def is_float(s): s = str(s) if s.count('.') == 1: left,right = s.split('.') #['-','1'] if left.isdigit() and right.isdigit(): # 正小数 return True elif left.startswith('-') and left.count('-')==1 and right.isdigit(): # 先判断负号开头,只有一个负号,小数点右边是整数 lleft = left.split('-')[1] # 如果有负号的话,按照负号分割,取负号后面的数字 if lleft.isdigit(): return True return False print(is_float('.1')) print(is_float(1.1)) print(is_float(-1.1)) print(is_float('000.1')) print(is_float('-s.1')) print(is_float('-s.s')) print(is_float('-0.s')) # 函数里面遇到return函数,立即结束执行
.png)
import datetime def get_today_data(): a = 1 b = 2 c = 3 return 3 print('abc') print('abc') print('abc') return a,b,c result = get_today_data() q = get_today_data() print(q)
.png)
def hhh(name): # 默认值参数 print(name) def op_file(file_name,content=None): if content: f = open(file_name,'w',encoding='utf-8') f.write(content) else: f = open(file_name,encoding='utf-8') return f.read() op_file('a.txt','abc')
.png)
.png)
def abc(name,age,phone,addr,money): print(name) print(age) print(phone) print(addr) print(money) abc('xiaohei',18,18744039980,'shanghai',50000) abc(age=18,addr='shanghai',money=500,phone=19322876543,name='xiaobai') abc('xiaohei',addr='dsa3dsa',phone=18333733333,money=323,age=32) abc(age=13,'xiaohuan') # 这种方式是不对的
.png)
file_name= 'user.json' # 全局变量 def func(): global file_name file_name = 'abc.json' # 先从自己函数里面找,如果没有就从全局变量里面找 print(file_name) func() print(file_name)
.png)
def test(): global a a = 5 def test1(): c = a + 5 return c res = test1() print(res) # 只调用了test1()函数,没有调用test(),所以报错
.png)
.png)
money = 500 def test(consume): return money - consume def test1(money): return test(money) + money money = test1(money) print(money)
.png)
# 常量 PI = 3.14 money = 500 def test(consume): return money - consume def test1(money): return test(money) + money # money = test1(money) # print(money)
python语言(三)文件修改、函数、json操作、监控日志代码、高效读取文件的更多相关文章
- linux 判断文件最后更新时间 实现监控日志是否有输出功能
linux 判断文件最后更新时间 实现监控日志是否有输出功能. 需求:监控log.txt日志文件,超过一分钟没输出内容就认为是停了,则自动启动程序. 用stat 可以看文件的更新时间stat -c % ...
- php高效遍历文件夹、高效读取文件
/** * PHP高效遍历文件夹(大量文件不会卡死) * @param string $path 目录路径 * @param integer $level 目录深度 */ function fn_sc ...
- Python 文件修改-函数介绍
上节课复习:1.字符编码 1.1 如何解决乱码问题: 字符存取使用的编码标准不一致 1.2 文件头 在文件的首行写入文件头,用于控制Python解释器读取py文件内容时使用的编码 #coding:文件 ...
- Python语言系列-04-高阶函数
闭包 #!/usr/bin/env python3 # author:Alnk(李成果) # 什么是闭包 # 1,闭包存在于函数中 # 2,闭包就是内层函数对外层函数(非全局变量)的引用 # 3,最内 ...
- Python语言程序设计之三--列表List常见操作和错误总结
最近在学习列表,在这里卡住了很久,主要是课后习题太多,而且难度也不小.像我看的这本<Python语言程序设计>--梁勇著,列表和多维列表两章课后习题就有93道之多.我的天!但是题目出的非常 ...
- Python 语言来编码和解码 JSON 对象
Json函数: json.dumps: Python标准库中的json模块,集成了将数据序列化处理的功能. 将 Python 对象编码成 JSON 字符串 语法: json.dumps(obj, sk ...
- python第三章:函数
在前面章节中,介绍了一些input(),print(),len()等内建函数,还有random,math等标准库相关函数,这些都是可以直接使用的,但是很多时候,我们也是可以编写自己的函数. 看个例子: ...
- Python(三)enumerate函数
原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143177932 ...
- python通过装饰器检查函数参数的数据类型的代码
把内容过程中比较常用的一些内容记录起来,下面内容段是关于python通过装饰器检查函数参数的数据类型的内容. def check_accepts(f): assert len(types) == f. ...
随机推荐
- 第八节:Asp.Net Core整合Log4net(官方的、微软的两种)
一. 整合Log4net 1. 简单说明 对于log4net 官方的程序集而言,从2.0.7开始就支持.Net Core了,这里我们采用的是2.0.8,虽然好久没更新了,但不影响使用.Core版本与普 ...
- AAct 一款 KMS 激活工具
AAct是一款由俄罗斯网友Ratiborus制作的非常小巧实用的KMS激活工具,能自动设置密钥管理服务激活Windows.Office VL版本.支持手动安装及删除激活产品密钥.手动创建及删除续期计划 ...
- 如何解决Requests的SSLError(转)
add by zhj: 我使用方法2“更新系统的certificate”解决了问题 原文:https://www.jianshu.com/p/8deb13738d2c 这两天在Linux上爬Googl ...
- Codeforces 878 E. Numbers on the blackboard
Codeforces 878 E. Numbers on the blackboard 解题思路 有一种最优策略是每次选择最后面一个大于等于 \(0\) 的元素进行合并,这样做完以后相当于给这个元素乘 ...
- Java学习:运算符的使用与注意事项
运算符的使用与注意事项 四则运算当中的加号“+”有常见的三种用法: 对于数值来,那就是加法. 对于字符char类型来说,在计算之前,char会被提升成为int,然后再计算.char类型字符,和int类 ...
- Java基础篇(中)
4.Java 关键字 下面列出了 Java 关键字.这些保留字不能用于常量.变量.和任何标识符的名称. 类别 关键字 说明 访问控制 private 私有的 protected 受保护的 public ...
- 【开发笔记】-Tomcat启动时设置Jdk版本
1. Window版本Tomcat 到bin下的setclasspath.bat文件,在文件的开始处添加如下代码: set JAVA_HOME=D:\Program Files\Java\jdk1.8 ...
- axios + vue导出excel文件
(使用到了elementUI框架) <template> <el-button type="primary" size="mini" @cli ...
- Android源码分析(二)-----如何编译修改后的framework资源文件
一 : 编译framework资源文件 如果修改android framework资源文件,需要先编译资源文件,然后再编译framework才可以正常引用, 进入项目目录 cd work/source ...
- spring boot如何处理异步请求异常
springboot自定义错误页面 原创 2017年05月19日 13:26:46 标签: spring-boot 方法一:Spring Boot 将所有的错误默认映射到/error, 实现Err ...