python - 常用函数
类型转换
1. 数字和字符串互转
数字转字符串str(n)
字符串转数字int('12')
2. 列表(或元组)和字符串互转
a)列表转字符串
my_list = ['a', 'b', 'c'] my_string = ''.join(my_list) # 使用 ''.join() print(my_string) # 打印:abc
如果列表中是int型,可以使用map() (map函数会根据提供的函数对指定序列做映射)
list1 = [1, 2, 3] b = ''.join(map(str, list1)) print(type(b), b) # 打印:<class 'str'> 123
b)字符串转列表
str1 = 'abc' list1 = list(str1) # 使用list() print(list1) # 打印:['a', 'b', 'c']
3. 列表和元组互相转换
list()
tuple()
list_data = ('apple', 'banana', 'pear') print(list_data) # 打印:('apple', 'banana', 'pear') tuple_data = list(list_data) print(tuple_data) # 打印:['apple', 'banana', 'pear'] list_data2 = tuple(tuple_data) print(list_data2) # 打印:('apple', 'banana', 'pear')
4. 字符串和字典互转
json.loads() 字符串-->字典
json.dumps() 字典-->字符串
import json verify = {"code":"OK","result":'true',"message":"OK"} print(verify) print(type(verify)) # 打印:<class 'dict'> v2 = json.dumps(verify) # 转为字符串 print(v2) print(type(v2)) # 打印:<class 'str'> v3 = json.loads(v2) # 转为字典 print(v3) print(type(v3)) # 打印:<class 'dict'>
例1:python读取json文件。123.json文件如下:键和值都必须是双引号)
[ {"username": "zhangsan", "passwd": "123"}, {"username": "lisi", "passwd": "444"} ]
python代码如下:
import json with open('/Users/zhangyang/Downloads/123.json', 'r') as f: data = f.read() print(data) print(type(data)) # 打印:<class 'str'> a = json.loads(data) # json文件本身为列表和字典格式,通过json将str转换为list类型 print(a) print(type(a), type(a[0])) # 打印:<class 'list'> <class 'dict'>
例2:响应体转换为字典
ret = requests.get(url=url, headers=headers) print(ret) # 打印:<Response [200]> print(type(ret)) # 打印:<class 'requests.models.Response'> a = ret.json() # 将requests.models.Response类型,转换为字典 print(type(a)) #打印:<class 'dict'> print(a) # 打印:{'code': 'OK', 'result': 123} print(a['code']) #打印:OK
字符串处理
1. 逆序打印字符串
# 方法1:使用字符串切片 str1 = 'abcdefg' print(str1[::-1]) # 打印:gfedcba # 方法2:使用list的reverse方法 str1 = 'abcdefg' list1 = list(str1) # 字符串转列表 list1.reverse() print(''.join(list1)) # 列表转字符串,打印:gfedcba
2. 拆分字符串 split():通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
str1 = 'www.baidu.com' str2 = str1.split('.') print(str2) # 打印:['www', 'baidu', 'com'] print(str2[0]) # 打印:www print(str2[1]) # 打印:baidu
3. 大小写转换 str.upper() str.lower()
print('fdsa'.upper()) print('Dfdas'.lower())
通用函数
1. 向上取整、向下取整、四舍五入
import math n = 157/10 print(n) # 15.7 print(math.ceil(n)) # 向上取整 16 print(math.floor(n)) # 向下取整 15
# 四舍五入 n = round(1.5) print(n) # 打印:2 m = round(1.2) print(m) # 打印:1
2. 随机数
import random list1 = ['a', 'b', 'c', 'd', 'e'] aa = random.choice(list1) # 从list1中随机获取一个元素 print(aa) n = random.randint(1, 100) # 从1到100中,随机获取一个值 print(n) m = random.randrange(1, 100, 2) # random.randrange(start, end, step),从1到100中,随机取一个奇数 print(m)
生成一组随机数列表:
import numpy p = numpy.random.randint(1, 100, size=[3, 4]) # 1到100之间,3行4列的列表
打印:
[[51 33 82 84]
[35 36 67 57]
[13 97 15 93]]
3. 查看变量类型 type()
a = 199 b = 'fdsa' c = ['d', 'fd', 'fds'] d = ('da', 'fds') e = { 'key1':'111', 'key2':'222' } print(type(a)) # 打印:<class 'int'> print(type(b)) # 打印:<class 'str'> print(type(c)) # 打印:<class 'list'> print(type(d)) # 打印:<class 'tuple'> print(type(e)) # 打印:<class 'dict'>
4. 查看变量的内存地址 id()
kk = 5 print(id(kk)) # 打印:4345756576
5. 获取文件的修改时间
print(os.path.getmtime('runtest.py'))
6. 判断所在操作系统
import platform print(platform.platform()) # 打印:Darwin-19.4.0-x86_64-i386-64bit(Darwin是苹果电脑系统) print(platform.system()) # 打印:Darwin
os模块
如果想实现与文件和文件夹有关的操作,就需要用到os模块
1. 列出某路径下所有的文件及文件夹(仅当前层级,不递归)
a = os.listdir('/tmp/zhangyang') # os.listdir() 列出某路径下的所有文件及文件夹(仅当前层级,不递归) print(a) # 打印:['2.log', '1.log', 'a.txt', 'gb']
2. 获取当前工作路径(不是工程路径)
import os dir = os.getcwd() # 获取当前工作路径 print(dir) # 打印:/Users/zhangyang/PycharmProjects/testUI
3. 获取当前文件的绝对路径
path3 = os.path.abspath(__file__) # 获取当前文件真正的绝对路径,打印:/Users/zhangyang/PycharmProjects/yft/config/cnf.py
path1 = os.path.abspath('.') # 获取当前工作路径的绝对路径,(不建议使用) 打印:/Users/zhangyang/PycharmProjects/testUI
print(path1)
path2 = os.path.abspath('cnf.py') # 获取当前工作路径的绝对路径,拼接文件名(无意义),打印:/Users/zhangyang/PycharmProjects/testUI/cnf.py
print(path2)
4. 获取当前文件的父目录
dir3 = os.path.dirname(path3) # 获取父目录,打印:/Users/zhangyang/PycharmProjects/yft/config
5. 增加路径
当前文件执行的目录加入到sys.path里面,后面不管你目录移动到什么位置,里面的文件都能执行。不过pycharm已经自动将工程目录加好了,可以忽略。(python执行py文件的时候,默认就会把当前路径加入到sys.path中)
from os.path import abspath, dirname import sys project_dir = dirname(dirname(abspath(__file__))) # 获取工程目录 sys.path.append(project_dir) # 将工程目录加入到sys.path中
6. 当前工作路径
当前工作路径:/Users/zhangyang/PycharmProjects/yft
当前文件目录:/Users/zhangyang/PycharmProjects/yft/api_operation/o1_public/o1_public.py
图片路径: /Users/zhangyang/PycharmProjects/yft/image/image1.png
open('./image/image1.png', 'rb') # ./指当前工作路径,而非当前文件所在目录
ps:
__file__ 代表当前脚本运行时的路径
cnf.py:
print(__file__)
终端用命令执行(在目录下直接执行):
python3 cnf.py
打印:cnf.py
终端用命令执行(带路径执行):
python3 /Users/zhangyang/PycharmProjects/yft/config/cnf.py
打印:/Users/zhangyang/PycharmProjects/yft/config/cnf.py
pycharm中运行结果如下:(pycharm自己会给增加一个绝对路径,终端里用命令执行是没有的)
print(__file__) # 打印:/Users/zhangyang/PycharmProjects/yft/config/cnf.py print(abspath(__file__)) # 打印:/Users/zhangyang/PycharmProjects/yft/config/cnf.py print(dirname(__file__)) # 打印:/Users/zhangyang/PycharmProjects/yft/config