Python:对目录中的文件名进行排序,并在每个文件名的开头添加一个数字

时间:2018-04-22 17:53:08

标签: python

1-intro-to deepleanring and computer visionk.MKV
2.Kaggle Deep Learning  - YouTube.MP4
Convolutional Neural Networks - Fun and Easy Machine Learning - YouTube.MP4
Convolutional Neural Networks - The Math of Intelligence (Week 4)YouTube.MKV
Introduction to Deep Learning- What Are Convolutional Neural Networks- YouTube.MP4
Kaggle Deep Learning 3 - YouTube.MP4
Kaggle Deep Learning 4 - YouTube.MP4
Kaggle Deep Learning 5 Data Augmentation - YouTube.MP4
Kaggle Deep Learning 6 - YouTube.MP4
Kaggle Deep Learning 7.mp4
Kaggle Deep Learning 8 - YouTube.MP4

这些是需要排序的文件。包含数字的文件名(在本例中为3) Kaggle Deep Learning 3 -YouTube.MP4 应重命名为 3 Kaggle深度学习 - YouTube.MP4 。不包含任何数字的文件名或在开头包含数字的文件无需重命名。

到目前为止,我已经编写了以下代码,而且我被困了

for f in os.listdir():
    filename,extension = os.path.splitext(f))

简而言之,我希望这些文件在我的目录中看起来像这样..

1-intro-to deepleanring and computer visionk.MKV
2 Kaggle Deep Learning  - YouTube.MP4
3 Kaggle Deep Learning  - YouTube.MP4
4 Kaggle Deep Learning  - YouTube.MP4
5 Kaggle Deep Learning  Data Augmentation - YouTube.MP4
6 Kaggle Deep Learning  - YouTube.MP4
7 Kaggle Deep Learning .mp4
8 Kaggle Deep Learning  - YouTube.MP4
Convolutional Neural Networks - Fun and Easy Machine Learning - YouTube.MP4
Convolutional Neural Networks - The Math of Intelligence (Week 4)YouTube.MKV
Introduction to Deep Learning- What Are Convolutional Neural Networks- 
YouTube.MP4

2 个答案:

答案 0 :(得分:1)

这不是一个干净的示例,但它可能会帮助您,在您要重命名文件的文件夹中运行它。

注意:在运行代码之前,请先备份您的内容...

import os

dirs = os.listdir(".")

#I am splitting every string into a chr because we dont know the location of the number
split_dir= [list(f) for f in dirs]


print "split_dir", split_dir

y = split_dir

for index, x in enumerate(split_dir):
    for char in x:
        print "char", char
        if(char.isdigit()):
            print "inside is digit"

            y[index].remove(char)
            y[index].insert(0,char)


y = [''.join(x) for x in y]
print "split_dir", y


#this section just renames the files in the current working directory
for index,file_name in enumerate(dirs):
    print("yindex", y[index])
    os.rename(file_name, y[index])

答案 1 :(得分:0)

经过一番努力,我已经解决了这个问题,这段代码在很大程度上解决了我的问题。

将每个字符串(文件名)拆分成字符是关键

import os
dirs = os.listdir(".")

for f in dirs:
filename, extension = os.path.splitext(f)

#splitting every string into a char because we don't know the location of the number
filenames = list(filename)
for char in filenames:
    if(char.isdigit()):
        #print('digit is', char)
        filenames.remove(char)
        filenames.insert(0,char)


        name = ''.join(filenames)

        new_name = '{}{}'.format(name,extension)
        #print(new_name)
        os.rename(f,new_name)