Blind开发日志:1月6日

今天的开发日志完全是为了展示学好 Python 对开发效率提高多大。

因为 Resource 下面的文件结构太复杂,需要生成大量空的文件夹,所以写了两行 bat 来做这件事:

1
2
3
4
5
@echo off
FOR /L %%G IN (0,1,100) DO (
mkdir %%G
)
echo 目录创建成功。

之后我这里的音频文件文件名结构是数字+空格+文件名,需要复制到对应数字的文件夹里。本来打算手动一个一个复制,复制2个以后就放弃了,然后打算用 bat 再写一段,结果不知道怎么用 bat 写 …… 所以又用 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
import os
import shutil

# 在这里设置你的目录
source_dir = '目录A'
target_dir = '目录B'

# 读取源目录中的所有文件
for file in os.listdir(source_dir):
if file.endswith('.mp3'):
# 从文件名中提取数字
number = file.split(' ')[0]
if number.isdigit():
# 构建源文件和目标文件的路径
source_file = os.path.join(source_dir, file)
target_subdir = os.path.join(target_dir, number)

# 检查目标子目录是否存在
if os.path.exists(target_subdir) and os.path.isdir(target_subdir):
target_file = os.path.join(target_subdir, file)

# 复制文件
shutil.copy2(source_file, target_file)
print(f"已将 '{file}' 复制到 '{target_subdir}'")
else:
print(f"目标目录 '{target_subdir}' 不存在。跳过 '{file}'。")
else:
print(f"文件 '{file}' 开头没有数字。跳过。")
else:
print(f"文件 '{file}' 不是MP3格式。跳过。")

print("完成!")

写完以后觉得用两个程序实现这件事太蠢了,于是用 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
import os
import shutil

# 第一步:创建数字命名的文件夹
# 设置目标目录
source_dir = '目录A'

# 创建名为0到100的目录
for i in range(101):
os.makedirs(os.path.join(target_dir, str(i)), exist_ok=True)

print("目录创建成功。")

# 第二步:复制文件
# 设置源目录
target_dir = '目录B'

# 读取源目录中的所有文件
for file in os.listdir(source_dir):
if file.endswith('.mp3'):
# 从文件名中提取数字
number = file.split(' ')[0]
if number.isdigit():
# 构建源文件和目标文件的路径
source_file = os.path.join(source_dir, file)
target_subdir = os.path.join(target_dir, number)

# 检查目标子目录是否存在
if os.path.exists(target_subdir) and os.path.isdir(target_subdir):
target_file = os.path.join(target_subdir, file)

# 复制文件
shutil.copy2(source_file, target_file)
print(f"已将 '{file}' 复制到 '{target_subdir}'")
else:
print(f"目标目录 '{target_subdir}' 不存在。跳过 '{file}'。")
else:
print(f"文件 '{file}' 开头没有数字。跳过。")
else:
print(f"文件 '{file}' 不是MP3格式。跳过。")

print("复制完成!")

在写完以上的内容后,突然觉得还是自动化的流程更有效率,于是决定重新整理开发文档的格式,之后直接用程序配表。

但是我之前的文档是 Word 格式的,我要转换成 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
from docx import Document
import pandas as pd

# 加载 Word 文档
file_path = 'word路径' # 替换为您的文件路径
doc = Document(file_path)

# 处理表格并返回 DataFrame 的函数
def process_table(table):
data = []
for row in table.rows:
row_data = []
for cell in row.cells:
row_data.append(cell.text)
data.append(row_data)
return pd.DataFrame(data)

# 将 Word 文档中的每个表格处理为 DataFrame
tables = [process_table(table) for table in doc.tables]

# 设置列名并清洗、分割选项列的函数
def set_columns_clean_split_table(table):
# 设置列名
table.columns = ['文件名', '内容', '选项']

# 从 '选项' 列中提取选项文本和数字
table['选项文本'] = table['选项'].str.extract(r'^(.*?)[,,]')
table['数字'] = table['选项'].str.extract(r'([0-9]+)$')

# 删除原始的 '选项' 列
table.drop(columns=['选项'], inplace=True)

return table

# 应用函数处理所有表格
processed_tables = [set_columns_clean_split_table(table) for table in tables]

# 将所有表格合并为一个 DataFrame
final_merged_table = pd.concat(processed_tables, ignore_index=True)

# 将最终合并的表格保存为 Excel 文件
final_excel_path = 'excel路径' # 替换为您的保存路径
final_merged_table.to_excel(final_excel_path, index=False)

Python 真的是强大的生产力工具。