6. 使用python将多个Excel文件合并到同一个excel-附代码解析

news2024/9/29 5:36:10

【目录】

文章目录

  • 6. 使用python将多个Excel文件合并到同一个excel-附代码解析
    • 1. 目标任务
    • 2. 结果展示
    • 3. 代码示例
    • 4. 代码解析
      • 4.1 导入库
      • 4.2 调用库的类、函数、变量语法
      • 4.3 os.listdir-返回目录中的文件名列表
      • 4.4 startswith-用于判断一个字符串是否以指定的前缀开头
      • 4.5 endswith-用于判断一个字符串是否以指定的后缀结束
      • 4.6 列表名.append向列表中增加元素
      • 4.7 pd.read_excel读取Excel文件
      • 4.8 将读取到的Excel数据添加到列表里
      • 4.9 pd.concat合并Pandas数据
      • 4.10 DataFrame.to_excel-将 DataFrame 保存为 excel 文件
      • 4.11 DataFrame.shape-查看 DataFrame 的行数和列数。
    • 5. 总结

【正文】

6. 使用python将多个Excel文件合并到同一个excel-附代码解析

1. 目标任务

某文件夹中有如下5个Excel:

在这里插入图片描述
在这里插入图片描述

销售表-1月.xlsx的内容如下:

在这里插入图片描述

5个Excel仅数据不一致,框架内容相同。

目标任务是将5个Excel合并成一个Excel。

2. 结果展示

在这里插入图片描述

3. 代码示例

源代码文件:6.合并多个Excel.py

import pandas as pd
import os
data_list = []

# os.listdir(".")返回目录中的文件名列表
# 用for循环遍历文件名列表中的每个文件名,赋值给变量filename
for filename in os.listdir("."):
    # 判断文件名是否以"销售表-"开头并且以".xlsx"结尾
    if filename.startswith("销售表-") and filename.endswith(".xlsx"):
        # pd.read_excel(filename)读取Excel文件,返回一个DataFrame对象
        # 列表名.append将DataFrame写入列表
        data_list.append(pd.read_excel(filename))

# concat合并Pandas数据
data_all =pd.concat(data_list)
# 将 DataFrame 保存为 excel 文件
data_all.to_excel("年度销售表.xlsx",index=False)

# 查看 DataFrame 的行数和列数。
rows = data_all.shape
print("查看行数与列数:", rows)
print("恭喜你,合并完成!")

【终端输出】

查看行数与列数: (25, 4)
恭喜你,合并完成!

4. 代码解析

4.1 导入库

import pandas as pd

导入pandas库,并将其别名设置为pd

as是一个关键字,用于给导入库指定一个别名。

别名的作用是引用pandas库中的函数和类,不必每次都写完整的pandas,可以用别名pd代替。

import os

导入os库,os库用于操作文件和目录。

data_list = []

创建一个空列表,用于存储后面读取的Excel数据。

4.2 调用库的类、函数、变量语法

  • 调用库的类:库名.类名( ),如 csv.DictReader()
  • 调用库的函数:库名.函数名( ),如 os.mkdir()
  • 调用库的变量:库名.变量名,如 os.name

【总结】

  • 不管调用什么,库名后都需要紧跟一个英文小圆点.
  • 调用类和函数需要加英文圆括号( )
  • 调用变量不用加英文圆括号( ),因为变量没有参数可以传递。

4.3 os.listdir-返回目录中的文件名列表

listdir()是一个Python的内置函数,用于返回指定目录中所有文件和文件夹名称的列表。

【语法】

os.listdir(path)

【参数】

path[pɑːθ]:路径。

path表示路径,指文件和文件夹的目录路径。

path可以是相对路径或绝对路径。

【返回值】

返回的数据类型是列表。

列表中的每个元素都是字符串类型。

如果指定的路径不存在或不是一个目录,则会引发OSError异常

【相对路径】

import os
os.listdir(".")

【终端输出】

['1.ipynb',
 '销售表-1月.xlsx',
 '销售表-2月.xlsx',
 '销售表-3月.xlsx',
 '销售表-4月.xlsx',
 '销售表-5月.xlsx']
  • os是库名。
  • .英文小圆点,库后接一个小圆点表示调用。
  • listdir函数名,作用是返回目录中所有文件和文件夹名称的列表。
  • 英文圆括号( )
  • ".",这里的表示当前工作目录。

【绝对路径】

import os
os.listdir("D:\安迪笔记\Excel合并")

【终端输出】

['1.ipynb',
 '年度销售表.xlsx',
 '销售表-1月.xlsx',
 '销售表-2月.xlsx',
 '销售表-3月.xlsx',
 '销售表-4月.xlsx',
 '销售表-5月.xlsx']

上述代码中的.也可以换成绝对路径"D:\安迪笔记\Excel合并"

"D:\安迪笔记\Excel合并"是我表格文件的存储路径,你需要换成你的路径。

os库的相关知识可参考下面的链接:

72. import 导入标准模块(os模块)

路径的相关知识可参考下面的链接:

67. Python的绝对路径

68. Python的相对路径

for filename in os.listdir("."):
    print(filename)

【终端输出】

1.ipynb
年度销售表.xlsx
销售表-1月.xlsx
销售表-2月.xlsx
销售表-3月.xlsx
销售表-4月.xlsx
销售表-5月.xlsx
  • os.listdir(".")得到的是一个文件名列表。
  • 用for循环遍历文件名列表中的每个文件名,赋值给变量filename
  • filename的数据类型为字符串类型。
filename = '1.ipynb'
filename = '销售表-1月.xlsx'
filename = '销售表-2月.xlsx'
filename = '销售表-3月.xlsx'
filename = '销售表-4月.xlsx'
filename = '销售表-5月.xlsx'

4.4 startswith-用于判断一个字符串是否以指定的前缀开头

startswith() 是 Python 字符串方法之一,用于判断一个字符串是否以指定的前缀开头

【语法】

string.startswith(prefix, start, end)

string表示一个具体的字符串。

startswith是方法名。

【参数】

  • prefix:必需参数,表示要检查的前缀,可以是一个字符或一个字符串。
  • start:可选参数,指定开始检查的起始位置,默认为 0。
  • end:可选参数,指定结束检查的位置,默认为字符串的长度。

【返回值】

返回一个布尔值,表示字符串是否以指定的前缀开始。

如果字符串以指定的前缀开始,则返回 True;否则返回 False。

【代码示例】

string = "安迪python学习笔记"

# 判断字符串是否以安迪开头
# 是输出 True
print(string.startswith("安迪")) 

# 字符串索引从0开始编号
# 索引2对应字符串的第3个字符
# 从字符串索引为2的位置开始检查
# 判断字符串第3位(包含)之后是否为python
# 是,输出 True
print(string.startswith("python", 2))  

# 检查范围为字符串索引2到索引8
print(string.startswith("Python", 2, 8))  # 这里是大写,输出False
print(string.startswith("python", 2, 8))  # 输出 True

【终端输出】

True
True
False
True

【实操练习】

filename = '销售表-1月.xlsx'
print(filename.startswith("销售表-")) 

【终端输出】

True

filename是变量名,数据类型是字符串。

返回True表示字符串以销售表-开头。

filename = '1.ipynb'
print(filename.startswith("销售表-"))

【终端输出】

False

返回False表示字符串不是以销售表-开头。

for filename in os.listdir("."):
    print(filename.startswith("销售表-"))

【终端输出】

False
True
True
True
True
True

4.5 endswith-用于判断一个字符串是否以指定的后缀结束

【语法】

string.endswith(suffix, start, end)

【参数】

  • suffix:必需参数,表示要检查的后缀,可以是字符串或元组类型。如果是元组,则会依次检查后缀是否包含在元组中的任意一个。
  • start:可选参数,指定开始检查的索引位置,默认为 0,表示从字符串的开头开始。
  • end:可选参数,指定结束检查的索引位置,默认为字符串的长度,表示一直检查到字符串的末尾。

【返回值】

返回一个布尔值,表示字符串是否以指定的后缀结束。

如果字符串以指定的后缀结束,则返回 True;否则返回 False。

【实操练习】

filename = '销售表-1月.xlsx'
print(filename.endswith(".xlsx"))

【终端输出】

True

返回True表示字符串以.xlsx结束。

filename = '1.ipynb'
print(filename.endswith(".xlsx"))

【终端输出】

False

返回False表示字符串不是以.xlsx结束。

for filename in os.listdir("."):
    print(filename.endswith(".xlsx"))

【终端输出】

False
True
True
True
True
True
if filename.startswith("销售表-") and filename.endswith(".xlsx"):

filenamee.startswith("销售表-")检查文件名是否以销售表-开头。
filename.endswith(".xlsx") 检查文件名是否以.xlsx结尾。
如果文件名符合上述两个条件,则执行以下代码块。

判断文件名是否以"销售表-“开头并且以”.xlsx"结尾

data_list.append(pd.read_excel(filename))

4.6 列表名.append向列表中增加元素

append函数用于在列表的末尾添加一个元素。

【语法】

列表名.append(要添加的元素)

【代码示例1】

data_list  = []
data_list.append("张三")
print(data_list)

【终端输出】

['张三']

【代码示例2】

data_list  = []
for i in range(3):
    data_list.append(i)
print(data_list)

【终端输出】

[0, 1, 2]

4.7 pd.read_excel读取Excel文件

read_excel是pandas 库中一个方法。

作用是读取 Excel 文件中的数据。

【语法】

pandas.read_excel(io)

read_excel方法提供了许多参数,这里仅介绍一个路径参数。

【参数】

io:要读取的Excel文件的路径(字符串类型)。

【返回值】

返回一个DataFrame对象。

【代码示例】

pd.read_excel('销售表-1月.xlsx')

【终端输出】

日期员工编号员工姓名销售额
0449273001刘一1000
1449283002陈二2000
2449293003张三3000
3449303004李四4000
4449313005王五5000
  • pd库名。
  • .英文小圆点,作用是调用库的方法。
  • read_excel方法名,作用是读取Excel文件。
  • 参数'销售表-1月.xlsx',表示要读取的Excel文件的路径。
print(type(pd.read_excel('销售表-1月.xlsx')))

【终端输出】

<class 'pandas.core.frame.DataFrame'>

返回的是DataFrame对象。

【思路解析】

通过4.5代码我们知道我当前的文件夹里有6个文件,如下所示:

filename = '1.ipynb'
filename = '销售表-1月.xlsx'
filename = '销售表-2月.xlsx'
filename = '销售表-3月.xlsx'
filename = '销售表-4月.xlsx'
filename = '销售表-5月.xlsx'

我的目标任务是要汇总5个Excel表格,因此我用了一个if条件判断语句选取了要汇总的文件路径,排除了不需要汇总的文件路径。

if filename.startswith("销售表-") and filename.endswith(".xlsx"):

filename = '1.ipynb'时,if条件判断语句的结果为False,它不会执行后面的读取Excel代码。

filename = '销售表-1月.xlsx'时,if条件判断语句的结果为True,执行后面的读取Excel代码。

【实操练习】

for filename in os.listdir("."):
    if filename.startswith("销售表-") and filename.endswith(".xlsx"):
        data = pd.read_excel(filename)
        print(data)

【终端输出】

      日期  员工编号 员工姓名   销售额
0  44927  3001   刘一  1000
1  44928  3002   陈二  2000
2  44929  3003   张三  3000
3  44930  3004   李四  4000
4  44931  3005   王五  5000
      日期  员工编号 员工姓名   销售额
0  44958  3001   刘一  1000
1  44959  3002   陈二  2000
2  44960  3003   张三  3000
3  44961  3004   李四  4000
4  44962  3005   王五  5000
      日期  员工编号 员工姓名   销售额
0  44986  3001   刘一  1000
1  44987  3002   陈二  2000
2  44988  3003   张三  3000
3  44989  3004   李四  4000
4  44990  3005   王五  5000
      日期  员工编号 员工姓名   销售额
0  45017  3001   刘一  1000
1  45018  3002   陈二  2000
2  45019  3003   张三  3000
3  45020  3004   李四  4000
4  45021  3005   王五  5000
      日期  员工编号 员工姓名   销售额
0  45047  3001   刘一  1000
1  45048  3002   陈二  2000
2  45049  3003   张三  3000
3  45050  3004   李四  4000
4  45051  3005   王五  5000

通过pd.read_excel(filename)读取到的数据如上所示。

data = pd.read_excel(filename)
  • data变量名,数据类型为DataFrame
  • pd库名。
  • .英文小圆点,作用是调用库的方法。
  • read_excel方法名,作用是读取Excel文件。
  • 参数filename,表示要读取的Excel文件的路径。

4.8 将读取到的Excel数据添加到列表里

data_list = []
for filename in os.listdir("."):
    if filename.startswith("销售表-") and filename.endswith(".xlsx"):
        data_list.append(pd.read_excel(filename))
print(data_list)

【终端输出】

[      日期  员工编号 员工姓名   销售额
0  44927  3001   刘一  1000
1  44928  3002   陈二  2000
2  44929  3003   张三  3000
3  44930  3004   李四  4000
4  44931  3005   王五  5000,       日期  员工编号 员工姓名   销售额
0  44958  3001   刘一  1000
1  44959  3002   陈二  2000
2  44960  3003   张三  3000
3  44961  3004   李四  4000
4  44962  3005   王五  5000,       日期  员工编号 员工姓名   销售额
0  44986  3001   刘一  1000
1  44987  3002   陈二  2000
2  44988  3003   张三  3000
3  44989  3004   李四  4000
4  44990  3005   王五  5000,       日期  员工编号 员工姓名   销售额
0  45017  3001   刘一  1000
1  45018  3002   陈二  2000
2  45019  3003   张三  3000
3  45020  3004   李四  4000
4  45021  3005   王五  5000,       日期  员工编号 员工姓名   销售额
0  45047  3001   刘一  1000
1  45048  3002   陈二  2000
2  45049  3003   张三  3000
3  45050  3004   李四  4000
4  45051  3005   王五  5000]

观察输出结果,注意输出的列表中包含5个列名:日期 员工编号 员工姓名 销售额

data_list.append(pd.read_excel(filename))
  • data_list列表名。

  • .英文小圆点。

  • append函数名,作用是向列表增加元素。

  • pd是库名。

  • read_excel读取 Excel 文件中的数据。

  • filename文件路径。

  • pd.read_excel(filename)得到的是一个DataFrame对象。

4.9 pd.concat合并Pandas数据

concat ()方法用于连接两个或多个数组。

【语法】

pandas.concat(objs, axis=0, join='outer', ignore_index=False)

【参数】

objs:要合并的 Pandas 数据结构,可以是 Series、DataFrame 或者 Panel 对象的列表或字典。
axis:指定合并的轴向,默认为 0,表示按行进行合并;如果设置为 1,表示按列进行合并。
join:指定合并的方式,默认为 ‘outer’,表示按照索引的并集进行合并;如果设置为 ‘inner’,表示按照索引的交集进行合并。
ignore_index:是否忽略原始对象的索引,默认为 False。如果设置为 True,则会创建一个新的整数索引。

【代码示例】

import pandas as pd

# 创建两个 DataFrame 对象
df1 = pd.DataFrame({'姓名': ['张三', '李四', '王五'], '性别': ['男', '男', '女']})
df2 = pd.DataFrame({'姓名': ['赵六', '孙七', '周八'], '性别': ['男', '男', '女']})

# 按行合并两个 DataFrame
result = pd.concat([df1, df2], axis=0, ignore_index=True)
print(result)

【终端输出】

   姓名 性别
0  张三  男
1  李四  男
2  王五  女
3  赵六  男
4  孙七  男
5  周八  女

上述代码要合并的是DataFrame对象。

【实操练习】

data_all =pd.concat(data_list)
print(data_all)
print(type(data_all))

【终端输出】

      日期  员工编号 员工姓名   销售额
0  44927  3001   刘一  1000
1  44928  3002   陈二  2000
2  44929  3003   张三  3000
3  44930  3004   李四  4000
4  44931  3005   王五  5000
0  44958  3001   刘一  1000
1  44959  3002   陈二  2000
2  44960  3003   张三  3000
3  44961  3004   李四  4000
4  44962  3005   王五  5000
0  44986  3001   刘一  1000
1  44987  3002   陈二  2000
2  44988  3003   张三  3000
3  44989  3004   李四  4000
4  44990  3005   王五  5000
0  45017  3001   刘一  1000
1  45018  3002   陈二  2000
2  45019  3003   张三  3000
3  45020  3004   李四  4000
4  45021  3005   王五  5000
0  45047  3001   刘一  1000
1  45048  3002   陈二  2000
2  45049  3003   张三  3000
3  45050  3004   李四  4000
4  45051  3005   王五  5000
<class 'pandas.core.frame.DataFrame'>

观察输出结果,注意输出的列表中仅包含1个列名:日期 员工编号 员工姓名 销售额

data_all =pd.concat(data_list)

  • data_all变量名,DataFrame对象,存储合并后的数据。
  • pd库名。
  • .英文小圆点。
  • concat方法名,作用是合并Pandas数据。
  • data_list要合并的数据。

4.10 DataFrame.to_excel-将 DataFrame 保存为 excel 文件

【语法】

DataFrame.to_excel(path, index=False)

DataFrame.to_excel将 DataFrame 保存为 excel 文件。

【参数】

path路径参数,将DataFrame保存到指定的路径下。

index可选参数。

index=True,保存索引列。

index=False,不保存索引列。

【实操练习】

data_all.to_excel("年度销售表.xlsx",index=False)
  • data_all变量名,DataFrame对象,存储了合并后的数据。
  • .英文小圆点。
  • to_excel方法名,作用是将 DataFrame 保存为 excel 文件。
  • "年度销售表.xlsx"路径参数,即汇总后Excel文件名。
  • index=False不保存索引列。

运行上面的代码后,当前文件夹下会生成一个名为年度销售表.xlsx文件。

在这里插入图片描述

4.11 DataFrame.shape-查看 DataFrame 的行数和列数。

shape 是 Pandas 库中的 DataFrame 对象的属性。

调用DataFrame.shape 会返回一个元组。

该元组包含两个整数值,分别表示 DataFrame 的行数和列数。

【代码示例】

import pandas as pd

data = {'姓名': ['张三', '李四', '王五'],
        '年龄': [25, 30, 35]
        }

df = pd.DataFrame(data)
print(df)
print(df.shape)  # 输出 (3, 3)

【终端输出】

   姓名  年龄
0  张三  25
1  李四  30
2  王五  35
(3, 2)

元组的3表示DataFrame对象有3行。
元组的2表示DataFrame对象有2列。

注意不包含列索引和行索引。

在这里插入图片描述

【实操练习】

rows = data_all.shape
print("查看行数与列数:", rows)

【终端输出】

查看行数与列数: (25, 4)

【备注】

联系作者回复【6.合并多个Excel】领取源文件和表格。

5. 总结

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/933567.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何评估开源项目的活跃度和可持续性?

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

深度学习1.卷积神经网络-CNN

目录 卷积神经网络 – CNN CNN 解决了什么问题&#xff1f; 需要处理的数据量太大 保留图像特征 人类的视觉原理 卷积神经网络-CNN 的基本原理 卷积——提取特征 池化层&#xff08;下采样&#xff09;——数据降维&#xff0c;避免过拟合 全连接层——输出结果 CNN …

postgresql-字符函数

postgresql-字符函数 字符串连接字符与编码字符串长度大小写转换子串查找与替换截断与填充字符串格式化MD5 值字符串拆分字符串反转 字符串连接 concat(str, …)函数用于连接字符串&#xff0c;并且忽略其中的 NULL 参数&#xff1b;concat_ws(sep, str, …) 函数使用指定分隔…

小研究 - Java虚拟机内存管理(三)

Java 语言的面向对象&#xff0c;平台无关&#xff0c;安全&#xff0c;开发效率高等特点&#xff0c;使其在许多领域中得到了越来越广泛的应用。但是由于Java程序由于自身的局限性&#xff0c;使其无法应用于实时领域。由于垃圾收集器运行时将中断Java程序的运行&#xff0c;其…

【手写promise——基本功能、链式调用、promise.all、promise.race】

文章目录 前言一、前置知识二、实现基本功能二、实现链式调用三、实现Promise.all四、实现Promise.race总结 前言 关于动机&#xff0c;无论是在工作还是面试中&#xff0c;都会遇到Promise的相关使用和原理&#xff0c;手写Promise也有助于学习设计模式以及代码设计。 本文主…

9个python自动化脚本,PPT批量生成缩略图、添加图片、重命名

引言 最近一番在整理资料&#xff0c;之前买的PPT资源很大很多&#xff0c;但归类并不好&#xff0c;于是一番准备把这些PPT资源重新整理一下。统计了下&#xff0c;这些PPT资源大概有2000多个&#xff0c;一共30多G&#xff0c;一个一个手动整理这个投入产出比也太低了。 作为…

CotEditor for mac 4.0.1 中文版(开源文本编辑器)

coteditorformac是一款简单实用的基于Cocoa的macOS纯文本编辑器&#xff0c;coteditormac版本可以用来编辑网页、结构化文本、程序源代码等文本文件&#xff0c;使用起来非常方便。 CotEditor for Mac具有正则表达式搜索和替换、语法高亮、编码等实用功能&#xff0c;而CotEdi…

QtWidgets和QtQuick融合(QML与C++融合)

先放一个界面效果吧&#xff01; 说明&#xff1a;该演示程序为一个App管理程序&#xff0c;可以将多个App进行吸入管理。 &#xff08;动画中的RedRect为一个带有QSplashScreen的独立应用程序&#xff09; 左侧边栏用的是QQuickView进行.qml文件的加载&#xff08;即QtQuick…

JS算法之树(一)

前言 之前我们已经介绍过一种非顺序数据结构&#xff0c;是散列表。 JavaScript散列表及其扩展http://t.csdn.cn/RliQf 还有另外一种非顺序数据结构---树。 树数据结构 树是一种分层数据的抽象模型。公司组织架构图就是常见的树的例子。 相关术语 一个树结构&#xff0…

x86的内存寻址方式

文章目录 一、实模式寻址二、保护模式寻址三、段页式内存管理四、Linux的内存寻址五、进程与内存1、内核空间和用户空间2、内存映射3、进程内存分配与回收 一、实模式寻址 在16位的8086时代&#xff0c;CPU为了能寻址超过16位地址能表示的最大空间&#xff08;因为 8086 的地址…

小研究 - J2EE 应用服务器的软件老化测试研究

软件老化现象是影响软件可靠性的重要因素&#xff0c;长期运行的软件系统存在软件老化现象&#xff0c;这将影响整个业务系统的正常运行&#xff0c;给企事业单位带来无可估量的经济损失。软件老化出现的主要原因是操作系统资源消耗殆尽&#xff0c;导致应用系统的性能下降甚至…

virtuoso61x中集成calibre

以virtuoso618为例&#xff0c;在搭建完电路、完成前仿工作之后绘制版图&#xff0c;版图绘制完成之后需要进行drc和lvs【仅对于学校内部通常的模拟后端流程而言】&#xff0c;一般采用mentor的calibre来完成drc和lvs。 服务器上安装有virtuoso和calibre&#xff0c;但是打开la…

servlet,Filter,责任的设计模式,静态代理

servlet servlet是前端和数据库交互的一个桥梁 静态网页资源的技术&#xff1a;在前端整个运行的过程中 我们的网页代码不发生改变的这种情况就称为静态的网页资源技术动态网页资源的技术&#xff1a;在前端运行的过程中 我们的前端页面代码会发生改变的这种情况就称为 动态的网…

电商版面设计之优惠券设计

1、画一个矩形---最快的方法&#xff0c;提前写好 2、ALT复制矩形图层 3、提前把优惠券的文案准备好 4、改一下字体---72 5、字体改成12号字体 6、上面对齐选择第二个去做&#xff0c;最上方 7、后面那个就是门槛 8、用Alt复制4个 9、改字就行 10、看见不错的优惠劵设计可以参…

word如何调整页码

文章目录 如何调整页码 如何调整页码 用 word 写报告的时候&#xff0c;经常遇到要求说是要从正文开始才显示页码&#xff0c;那如何实现呢 把鼠标放在我们正文的那一页的顶部&#xff0c;点击 布局 ,再点击分隔符&#xff0c;再点击连续 再点击编译页脚 选择你想要的页脚格式…

十四、pikachu之XSS

文章目录 1、XSS概述2、实战2.1 反射型XSS&#xff08;get&#xff09;2.2 反射型XSS&#xff08;POST型&#xff09;2.3 存储型XSS2.4 DOM型XSS2.5 DOM型XSS-X2.6 XSS之盲打2.7 XSS之过滤2.8 XSS之htmlspecialchars2.9 XSS之href输出2.10 XSS之JS输出 1、XSS概述 Cross-Site S…

探讨uniapp的组件使用的问题

1 view Flex是Flexible Box的缩写&#xff0c;意为“弹性布局”&#xff0c;用来为盒状模型提供最大的灵活性。 当设置display: flex后&#xff0c;继续给view等容器组件设置flex-direction:row或column&#xff0c;就可以在该容器内按行或列排布子组件。uni-app推荐使用flex布…

[Linux]进程

文章目录 1. 进程控制1.1 进程概述1.1.1 并行和并发1.1.2 PCB1.1.4 进程状态1.1.5 进程命令 1.2 进程创建1.2.1 函数1.2.2 fork() 剖析 1.3 父子进程1.3.1 进程执行位置1.3.2 循环创建子进程1.3.3 终端显示问题1.3.4 进程数数 1.4 execl和execlp函数1.4.1 execl()1.4.2 execlp(…

Android 13.0 首次开机默认授予app运行时权限(去掉运行时授权弹窗)

1.概述 在13.0的系统产品开发中,在android6.0以后对于权限的申请,都需要动态申请,所以会在系统首次启动后,在app的首次运行时,会弹出授权窗口,会让用户手动授予app运行时权限,在由于系统产品开发需要要求默认授予app运行时权限,不需要用户默认授予运行时弹窗,所以需要…

基于OpenCV的迷宫路径查找

附上代码&#xff1a; import cv2 import numpy as np# 读取图像 img cv2.imread("img_3.png") thres_min 150 # 二值化最小阈值if not img is None:# 二值化处理ret, img cv2.threshold(img, thres_min, 255, cv2.THRESH_BINARY)cv2.imshow("img_thres&qu…