使用python重命名文件夹中的文件名列表
Posted
技术标签:
【中文标题】使用python重命名文件夹中的文件名列表【英文标题】:Rename a list of filename in a folder using python 【发布时间】:2017-10-09 11:08:18 【问题描述】:我的数据文件夹中有一个 WAV 文件列表,数据以小时、分钟和秒的格式显示。
例如,
C:\Users\Desktop\Data
01h02m02s.wav
01h02m13s.wav
01h02m24s.wav
我需要修改文件名,以编程方式将其转换为秒。我该怎么做?
3722s.wav
3733s.wav
3744s.wav
感谢所有反馈和帮助。
谢谢
【问题讨论】:
见 ***.com/questions/7833807/… 和 os.rename(old,new) 从字符串中获取小时、分钟和秒的部分。将小时乘以 3600,将分钟乘以 60,然后将秒数相加。因此,如果data = '01h02m02s.wav'
您将拥有sum([int(data[:2]) * 3600, int(data[3:5]) * 60], int(data[6:8]))
,那么您将获得3722
。
【参考方案1】:
使用glob.glob()
获取文件列表,然后使用正则表达式尝试从文件名中提取hours
、minutes
和seconds
。 os.rename()
用于实际重命名文件:
import glob
import re
import os
path = r'C:\Users\Desktop\Data'
for wav in glob.glob(os.path.join(path, '*.wav')):
re_hms = re.findall(r'(\d+)h(\d+)m(\d+)s\.wav', wav)
if re_hms:
hours, minutes, seconds = map(int, re_hms[0])
total_seconds = hours * 3600 + minutes * 60 + seconds
new_wav = os.path.join(path, 's.wav'.format(total_seconds))
print " -> ".format(wav, new_wav)
os.rename(wav, new_wav)
os.path.join()
用于安全地将文件路径连接在一起,而不必担心添加路径分隔符。
【讨论】:
【参考方案2】:如果路径中的所有文件都是 WAV 并且它们的名称具有您所显示的模式,您可以使用它。
import os
path = r'C:\Users\Desktop\Data'
waves = os.listdir(path)
for wave in waves:
hours, minutes, seconds = map(int, [wave[:2], wave[3:5], wave[6:8]])
total_seconds = hours * 3600 + minutes * 60 + seconds
new_name = os.path.join(path, "s.wav".format(total_seconds))
os.rename(os.path.join(path, wave), new_name)
【讨论】:
以上是关于使用python重命名文件夹中的文件名列表的主要内容,如果未能解决你的问题,请参考以下文章