1. 文件读写:b模式python
import requests url = 'http://www.nnzhp.cn/wp-content/uploads/2018/01/601a335c499837a995ae10867fc36101.png' img = requests.get(url).content f = open('hhh.jpg', 'wb') # bytes:以二进制模式打开,有wb、rb、ab组合 f.write(img)
拓展:git
f = open('haha.txt','w') f.write('test') # 不加下面这个这句,有时会在文件中看不到写入的数据,是由于有缓冲区,它会等缓冲区数据存储到必定的值才会写入到磁盘 f.flush() #当即把缓冲区的内容写到磁盘里面。 time.sleep(50) with open('b.txt') as f,open('c.txt') as fc:#自动关文件指针;一个with能够打开多个文件,逗号隔开便可。 f.write('aaa')
2. 修改文件的2种方式:windows
# 粗暴直接,适用于小文件,内容少 with open('geci','a+',encoding='utf-8') as f: f.seek(0) all = f.read() new_all = all.replace('二','一') f.seek(0) f.truncate() f.write(new_all) f.flush()
# 替换一个文件中的内容,直接修改文件很差实现,通常把修改后的文件内容保存到bak文件,删除原来文件,rename bak文件。 # .**文件是隐藏文件 with open('geci.txt', 'r+', encoding='utf-8') as f, open('.geci.bak', 'w', encoding='utf-8') as ff: for i in f: newline = i.replace('一', '二') ff.write(newline) os.remove('geci.txt') os.rename('.geci.bak', 'geic.txt')
3. 函数函数
# 函数:就是把一堆代码组合到一块儿,变成一个总体 # 提升代码的复用性 # def hello(filename,content): 这种是位置参数,必填参数 # def hello(filename,content='ceshi'): # 默认值参数,非必填 def hello(filename,content=''): #形参 with open(filename,'a+',encoding='utf-8') as f: if content: f.write(content) else: f.seek(0) res = f.read() return res print(hello('demo.txt')) #实参
# return 当即结束函数 print(hello('demo.txt','1243')) #函数没有写return的话,返回值是None,返回值不是必须写的,须要获取函数返回值再写 a = 100
可变参数性能
# 可变参数,*args def test(a,b=1,*args): # print("a",a) # print("b", b, type(b)) print('args',args) test("haha") # 若是后面有多余的参数,会把它保存到args元组中 test("haha",'22','1','2')
关键字参数学习
# 关键字参数 def test2(a, **kwargs): print('a:',a) print(kwargs) test2(a=1,name='test') # {'name': 'test'}
练习题测试
print('-1'.isdigit()) # 判断一个字符串是不是纯数字 # 1.写一个校验字符串是否为合法的小数 # 0.88 # -0.99 def check_float(num): str_num = str(num) print("str_num:",str_num) if str_num.count('.') == 1: left = str_num.split('.')[0] right = str_num.split('.')[1] print("left %s;right %s" % (left,right)) if left.isdigit() and right.isdigit(): # 正小数 return True elif left.startswith('-') and left.count('-') == 1: if left.split('-')[-1].isdigit() and right.isdigit(): return True return False print(check_float('-1.-1')) # 这里若是直接传float型数字,传参过程当中会自动给把数字给你转型。
4. 模块url
# 一个Python文件就是一个模块 # 1.标准模块 # python自带的,不须要安装 # 2.第三方模块 # 手动安装 # # 首先下载安装包 # 解压 # 在命令行里面进入到这个解压以后的目录(windows下如何快速进入cmd命令窗口:按住shift+右键:在此处打开命令窗口) # 执行python setup.py install # # 3.本身写的python文件 # import xx 导入一个文件的实质:把这个python文件运行一次 # import hahaha # import 导入文件时,首先从当前目录下找这个文件 # 而后从python的环境变量中寻找 # 环境变量是让在任何目录下都能使用这个命令 import sys print(sys.path) # 查看系统的环境变量,在pycharm下执行这句,会把工程根目录也打印出来,这是pycharm自动加上的。
5. 递归spa
# 递归:本身调用本身 count = 0 def test1(): global count count += 1 # num = 8 # num = int(input('please enter a number:')) # if num%2==0:# 判断输入的数字是否是偶数 # return True # 若是是偶数的话,程序就退出了,返回true print('不是偶数请从新输入!') return test1() # 若是不是偶数的话继续调用本身,输入值 print(test1()) # 调用test # 用递归能实现的用循环都能实现,但最好不用递归,效率较低。 # 递归最多递归999次
6. 集合命令行
# 集合,天生去重 # 集合的做用: # 一、它能够把一个列表中重复的数据去掉,而不须要你再写判断 # 二、能够作关系测试,好比说有两个班,一个性能测试班,一个是接口测试班的,想找出来既学习了性能又学习了接口测试的同窗,就能够用集合 li = [2, 3, 1, 2, 3, 4] s_list = set(li) # 这样就定义了一个集合 set1 = set([1, 3, 4, 5, 6]) # 这种方式和上面的都是把list转换成一个集合 set2 = {'hehe', 'hehe1', 'hehe3'} # 直接定义一个集合 s = set() s2 = {'1', '2', '3', '4'} # 集合是无序的,没有办法经过下标取值 s2.add('5') s2.add('1') s3 = {'1', '2'} print(s2.intersection(s3)) # 取交集,生成了1个新的集合,不会修改原来的集合 print(s2) print(s3) # print(s3 & s2) # 取交集 # # print(s3.union(s2)) # 取并集 # print(s3 | s2) # 取并集 # # print(s2.difference(s3)) # 在s2中存在,在s3中不存在 # print(s2 - s3) # 取差集