Python - 笔记
用Python做过一些自动化小工具,写一下备忘或加深理解,虽然大概率不会再看
1.场景一:将接口获取到的data内容循环存放在二维数组:
场景:
response=rq.get(url=host+url,headers=headers,verify=False,proxies=proxies) response_json=response.json() array_2d = [[item['id'], item['name']] for item in response_json['data']]
假设我们从某个API得到了如下JSON响应: response_json = { 'data': [ {'id': 101, 'name': '张三', 'age': 25}, {'id': 102, 'name': '李四', 'age': 30}, {'id': 103, 'name': '王五', 'age': 28} ] }
-
定位到数据列表:表达式
for item in response_json['data']首先找到response_json['data']。这是一个包含三个字典的列表。 -
逐项遍历:它开始循环遍历这个列表中的每一个元素(每个元素都是一个字典,这里叫
item):-
第一轮循环:
item={'id': 101, 'name': '张三', 'age': 25} -
第二轮循环:
item={'id': 102, 'name': '李四', 'age': 30} -
第三轮循环:
item={'id': 103, 'name': '王五', 'age': 28}
-
-
提取字段并构建子列表:对于每个
item,执行[item['id'], item['name']],从字典中提取'id'和'name'的值,并用它们创建一个新列表。-
第一轮:
[101, '张三'] -
第二轮:
[102, '李四'] -
第三轮:
[103, '王五']
-
-
汇总为二维列表:所有生成的新列表,最终被组合成一个外层的二维列表,并赋值给变量
array_2d。
等价于传统写法:
array_2d = [] for item in response_json['data']: row = [item['id'], item['name']] array_2d.append(row)
2.场景二 :分离文件名、文件后缀、文件二进制上传
场景:
file_path = '实际文件路径' filename = file_path.split('\\')[-1] # 获取文件名 #os.path.splitext(filename)返回的是一个包含两个元素的元组:filename_without_ext[0] 是 '文件名xxx',file_extension[1] 是 '.文件后缀' filename_without_ext, file_extension = os.path.splitext(filename) # 分离文件名和扩展名 content_type = mimetypes.guess_type(file_path) if content_type is None: content_type = 'application/octet-stream' # 默认 MIME 类型 with open(file_path, 'rb') as file: # 构建文件上传数据 files = { 'file': (filename, file, content_type[0]), #文件上传中必须正确格式:'file': (filename, file, content_type) } #构建文件上传请求体 data ={ 'filename': filename, 'brandId': bid, } post_import = rq.post(url=host+url, headers=headers, files=files,data=data,proxies=proxies,verify=False)
- 第一步:函数处理(
os.path.splitext(filename))os.path.splitext()函数接收一个文件名(字符串)作为输入,然后按照最后一个点.的位置,将其切分成两部分,并返回一个包含这两个字符串的元组 (tuple)。-
import os
result_tuple = os.path.splitext('报告.pdf') print(result_tuple) # 输出:('报告', '.pdf') # 它是一个包含两个元素的元组:result_tuple[0] 是 '报告',result_tuple[1] 是 '.pdf' result_tuple2 = os.path.splitext('archive.tar.gz') print(result_tuple2) # 输出:('archive.tar', '.gz') # 注意:它只认最后一个点,所以 '.gz' 被识别为扩展名
- 第二步:元组拆包赋值(
a, b = 元组)
-
- Python允许将元组中的元素直接“解包”并分别赋值给对应的变量。因为上一步返回的元组固定有两个元素,所以我们可以用两个变量来接住它们。
-
ilename_without_ext, file_extension =result_tuple
等价于传统写法:
result_tuple = ('报告', '.pdf') filename_without_ext = result_tuple[0] # '报告' file_extension = result_tuple[1] # '.pdf' # Python的元组解包语法让你可以一行完成: filename_without_ext, file_extension = ('报告', '.pdf')
作者:小林同学_Scorpio
本博客所有文章仅用于学习、分享和交流目的,欢迎非商业性质转载。
博主的文章没有高度、深度和广度,只是凑字数,做笔记。由于博主的水平不高,不足和错误之处在所难免,希望大家能够批评指出。
博主是利用参考、引用、抄袭、复制和粘贴等多种方式打造成自己的文章,请原谅博主成为一个无耻的文档搬运工!

浙公网安备 33010602011771号