0%

封装python脚本

使用pyinstaller进行封装

1
pyinstaller <python文件名>
  • 会生成三个文件bulid、dist和一个spec文件

  • exe程序位于dist文件夹中

  • exe程序中的源程序所对应的路径是dist文件夹中的__internal文件夹

    1
    path = os.path.dirname(__file__)
Read more »

基于excel的元素进行数据分类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
'''
Description:
Author: CrayonXiaoxin
Date: 2024-09-10 09:49:17
LastEditTime: 2024-09-10 15:50:30
LastEditors:
'''
import os
import openpyxl

if __name__ == '__main__':
path = os.path.dirname(__file__)
os.chdir(path)
print(path)
# 检查文件是否存在
file_name = input("请输入文件名:")
if not os.path.exists(file_name):
raise FileNotFoundError(f"文件 {file_name} 不存在!")

workbook = openpyxl.load_workbook(file_name)
print(workbook.sheetnames)
sheet1 = input("请输入主表名字:")
# 获取 Sheet1(假设其名字是 '1')
if sheet1 not in workbook.sheetnames:
raise ValueError("找不到名为 %s 的工作表"%sheet1)

sheet = workbook[sheet1]
rows = sheet.max_row
column = sheet.max_column

# 获取表头
topName = []
for i in range(1, column+1):
topName.append(sheet.cell(1, i).value)
names = []
# 自定义分类名称
for i in range(1,1000):
name = input("请输入要整理的名字:(如果想结束请输入#)")
if name == '#':
break
names.append(name)


# 创建新的 Sheet
for name in names:
if name not in workbook.sheetnames:
workbook.create_sheet(name)

# 按分类写入数据
for i in range(2, rows+1): # 从第2行开始读取,因为第1行是表头
name = sheet.cell(i, 2).value
if name in names:
viceSheet = workbook[name]
values = [sheet.cell(i, j).value for j in range(1, column+1)]
vicerows = viceSheet.max_row
if vicerows == 0:
# 如果新建的表是空的,首先写入表头
for l in range(1, column+1):
viceSheet.cell(1, l, topName[l-1])
vicerows = 1
for k in range(1, column+1):
viceSheet.cell(vicerows + 1, k, values[k-1])

# 保存并关闭文件
workbook.save(file_name)
workbook.close()

ji

Read more »

新建文章

hexo new post

上传文章

1
2
3
hexo clean
hexo g
hexo d

离线预览

hexo s

标注

tags:标签

categories:类别

Read more »

python

基础

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
a = input('输入')//input()返回的数据类型是str,需要进行转换
a = int(a)
print(a)

if a < 10:
print(a)
elif a > 10 and a < 20:
print(a)
else
print(a)

//简单匹配
score = 'B'
match score:
case 'A':
print('A')
case 'B':
print('B')
//复杂匹配
age = 15
match age:
case x if x < 10://当age < 10 成立时匹配,且赋值给x
print(1)
case 10:
print(10)
case 11 | 12 | 13://匹配多个值
print(11~13)


//循环
names = ['a','b']
for name in names:
print(name)

sum = 0
for x in range(100):
sum = sum + x
print(sum)

while n > 0:
sum = sum + n
n = n - 1
print(sum)

list

list:列表,一种有序的集合,可以随时添加和删除其中的元素

list元素的数据类型可以不同

list元素也可以是另一个listlist = [ 'a' , [1,2] ]

1
2
3
4
5
6
7
8
9
10
11
classmate = ['a','b','c']
len = len(classmate)//获取元素个数
s = classmate[0] //索引访问,下标从0开始
s = classmate[-1] //获取最后一个元素
s = classmate[-2]//倒数第二个
classmate.append('d')//追加元素到末尾
classmate.insert(1,'g')//往索引为1的地方插入元素
classmate.pop()//删除末尾元素
classmate.pop(i)//删除索引为i的元素
classmate[1] = 'f'//修改元素

tuple

tuple也是有序列表,但是tuple一旦初始化就不能修改,代码更安全

1
2
t = (1,2)
t = (1,)// !只有一个元素是需要加一个逗号消除歧义

dict

Read more »

stl容器

vector

动态分配内存

1
2
3
4
5
6
vector<int>v1(3);
v1.insert();//在迭代器位置插入元素
v1.erase();//在迭代器或区间删除元素
v1.push_back();
v1.pop_back();

array

固定长度的数组数据结构

1
2
3
4
5
array<int,3> v0;
v0.fill(1);//以指定值填充容器
v0.front();//第一个元素
v0.back();//最后一个元素
v0.data();

deque

双端队列

1
2
3
4
5
6
7
8
deque<int>v0;
v0.front();
v0.back();
v0.insert();
v0.push_front();
v0.pop_front();
v0.push_back();
v0.pop_back();
Read more »