惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
Last Week in AI
Last Week in AI
博客园_首页
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 叶小钗
大猫的无限游戏
大猫的无限游戏
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
宝玉的分享
宝玉的分享
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
T
Tailwind CSS Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
量子位
博客园 - 聂微东
S
SegmentFault 最新的问题
博客园 - 司徒正美
罗磊的独立博客
V
V2EX
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
美团技术团队
小众软件
小众软件
Jina AI
Jina AI

Tifa's Blog

随笔 - 关于 C++ 模板的部分特化 随笔 - Miller-Rabin + Pollard-Rho 分解质因子的时间复杂度分析 VP 记录 - 2021 CCPC 哈尔滨站 VP 记录 - 2023 ICPC 亚洲区域赛 (南京) VP 记录 - 2023 CCPC 哈尔滨站 VP 记录 - 2023 CCPC 桂林站 VP 记录 - 2023 ICPC 亚洲区域赛 (网络预选赛 Ⅰ) VP 记录 - 2021 ICPC 亚洲区域赛 (澳门) 题解 - [Luogu P7486] 「Stoi2031」彩虹 拟阵简介(unfin) 题解 - [Luogu P5824] 十二重计数法 随笔 - C++ 的高维向量 | Tifa's Blog 目录 - 算法竞赛模板 | Tifa's Blog 目录 - 学术垃圾 | Tifa's Blog 比赛记录 - Codeforces Round #842 (Div. 2) 比赛记录 - Hello 2023 | Tifa's Blog 比赛记录 - Codeforces Round #841 (Div. 2) and Divide by Zero 2022 随笔 - C++ 基于标签分发的线性筛 | Tifa's Blog VP 记录 - 2022 ICPC 亚洲区域赛 (杭州) VP 记录 - 2022 ICPC 亚洲区域赛 (济南)
随笔 - 批量重命名 APK 文件的 Python 脚本
Tifa · 2024-02-18 · via Tifa's Blog

为了方便整理文件, 我简单搓了个 Python 脚本来按一定格式批量重命名 APK 文件

使用方式

把脚本文件放到想要重命名的文件夹里然后运行即可, 脚本会进行如下操作:

  1. 递归遍历当前文件夹和子文件夹
  2. 找出文件名为 *.{apk,1} 的所有文件
  3. 使用 https://github.com/appknox/pyaxmlparser 来解析 APK 的文件信息, 并按 <应用名>-<包名>-<版本名>(<版本号>).apk 的格式重命名, 若重名则删除文件

代码

rename_apk.pyview raw
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
import os
from pyaxmlparser import APK


def get_new_filename(oldname):
apk = APK(oldname)
result = rf'{apk.application}-{apk.package}-{apk.version_name}({apk.version_code}).apk'

return result.translate(str.maketrans(r'\/:*?"<>|', '_'*9))


for dirpath, _, filenames in os.walk('.'):
print(f'In "{dirpath}":')
for filename in filter(lambda x: x.endswith('.apk') or x.endswith('.1'), filenames):
try:
oldname = os.path.join(dirpath, filename)
new_filename = get_new_filename(oldname)
if filename == new_filename:
continue
os.rename(oldname, os.path.join(dirpath, new_filename))
print(f'\t"{filename}" -> "{new_filename}"')
except FileExistsError:
os.remove(oldname)
print(f'\t"{filename}" removed because "{new_filename}" exists')
except Exception as e:
print(f'Error occured on "{filename}"')
raise e