首页 文章详情

Python实战:乱序文件重新命名编号

大邓和他的Python | 164 2022-07-31 18:53 0 0 0
UniSMS (合一短信)

人生苦短,快学Python!

最近有位读者朋友遇到了一个小问题,私聊找小五答疑。感觉也会有其他同学会遇到,所以干脆分享出来。

PS:目前新书《快学Python》读者群已开启,购书后即可加入获得答疑。


如下图所示,在本地文件夹中有这样一堆视频文件,在这种情况下并不是乱序的。

但是将其上传到网盘中后,就会经常变成乱序。即它们会按照1、10、11、2、20这样排序,并不方便我们按顺序去依次观看。

所以我们希望能够给它们在本地重新命名编号,比如可以按照001、002、003···、020这样排序,就可以避免上面这种尴尬的情况了。

在Python中,os模块可以用来自动处理各种文件和目录,比如复制、移动、重命名和删除等操作。

获取文件列表

在交互式环境中输入如下命令:

import os

path =  os.getcwd()
filenames = os.listdir(path)
filenames

输出:

os模块中的getcwd()函数,使用它可以获取当前工作目录。os模块中的listdir()函数,可以返回工作目录中的所有文件和子目录。通过这两个函数,我们就获取了当前工作目录下的所有文件。

筛选视频文件

在交互式环境中输入如下命令:

file_mp4s = [i for i in filenames if i.split(".")[-1] == "mp4"]
file_mp4s

输出:

这一步骤,是用来筛选文件列表中的所有mp4文件。用循环+条件太繁琐,而列表生成式则可以用一行语句得到视频文件。

批量重命名

在交互式环境中输入如下命令:

for i in file_mp4s:
    new_name = i.split("-")[0].zfill(3) + "-" + i.split("-")[1]
    os.rename(i,new_name)

输出:

os模块中的rename()函数,使用它可以重命名文件。

这里还用到一个字符串函数zfill(),它会返回指定长度的字符串,原字符串右对齐,前面填充0。所以"1".zfill(3)的话,会返回'001'



精选文章

长期征稿 | 欢迎各位前来投稿

从符号到嵌入:计算社会科学的两种文本表示

推荐 | 社科(经管)文本分析快速指南

使用cntext训练Glove词嵌入模型

Asent库 | 英文文本数据情感分析

扩增内置pkl | 欢迎各位向cntext库分享情感词典

cntext库 | 关于DUTIR被污染解决办法

近年《金融研究》使用文本分析论文汇总

EmoBank | 中文维度情感词典

sklearnex库 | 两行代码百倍加速你的机器学习代码

认知的测量 | 向量距离vs语义投影

Wordify | 发现和区分消费者词汇的工具

视频专栏课 | Python实证指标构建与文本分析

LIWC vs Python | 文本分析之词典统计法略讲(含代码)

PNAS | 文本网络分析&文化桥梁Python代码实现

Wordify | 发现和区分消费者词汇的工具

BERTopic库 | 使用预训练模型做话题建模

tomotopy | 速度最快的LDA主题模型

管理世界 | 如何用文本分析度量管理层短视主义

管理世界 | 使用中文LM金融词典做管理层语调分析

管理世界 | 使用中文LM金融词典做管理层语调分析

文本分析 | 中国企业高管团队创新注意力(含代码)

近年《管理世界》《管理科学学报》使用文本分析论文

近年《金融研究》使用文本分析论文汇总

100min视频 | Python文本分析与会计

改善matplotlib在jupyter内的渲染效果

good-icon 0
favorite-icon 0
收藏
回复数量: 0
    暂无评论~~
    Ctrl+Enter