使用python重命名文件夹中的文件名列表

时间:2017-10-09 11:08:19

标签: python python-2.7 file

我在数据文件夹中有一个WAV文件列表,以小时,分钟和秒的格式显示。

例如,

C:\Users\Desktop\Data

01h02m02s.wav
01h02m13s.wav
01h02m24s.wav

我需要以编程方式修改文件名,以便将其转换为秒。我该怎么做?

3722s.wav
3733s.wav
3744s.wav

非常感谢所有反馈和帮助。

谢谢

2 个答案:

答案 0 :(得分:2)

使用glob.glob()获取文件列表,然后使用正则表达式尝试从文件名中提取hoursminutessecondsos.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)