我在数据文件夹中有一个WAV文件列表,以小时,分钟和秒的格式显示。
例如,
C:\Users\Desktop\Data
01h02m02s.wav
01h02m13s.wav
01h02m24s.wav
我需要以编程方式修改文件名,以便将其转换为秒。我该怎么做?
3722s.wav
3733s.wav
3744s.wav
非常感谢所有反馈和帮助。
谢谢
答案 0 :(得分:2)
使用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()
用于安全地将文件路径连接在一起,而不必担心添加路径分隔符。
答案 1 :(得分:0)
如果路径中的所有文件都是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)