Python - 将前导0添加到文件号

时间:2016-03-01 14:56:42

标签: python python-3.x

我是python和编程的新手 我在文件夹中有1200个文本文件,格式如下:
詹姆斯 - 1 - 如何...... .txt
莎拉 - 2 - 如何... .txt
Steph - 3 - 如何... .txt
...
玛利亚 - 200 - 如何... .txt
...
拉什福德 - 1200 - 如何... .txt

我想重命名1000以下的文件以添加前导0,以便它们都具有相同的位数,例如,0001,0050,0300

到目前为止,这是我的代码,但我被困住了:

#!python3

import os
from tkinter import filedialog

cleaned_files = []

root_folder = filedialog.askdirectory()
os.chdir(root_folder)
folder_files = os.listdir(root_folder)

# Filter out files starting with '.' and '_'
cleaned_files = []
for item in folder_files:
    if item[0] == '.' or item[0] == '_':
        pass
    else:
        cleaned_files.append(item)


# Find file names of the root folder and save them


def getFiles(files):
    for file in files:
        file_start, file_number, file_end = file.split('-')
        file_number.strip()

        # Was trying to append just one 0 to numbers <10
        if int(file_number) < 10:
            print(file_number)
        else:
            pass
getFiles(cleaned_files)

2 个答案:

答案 0 :(得分:2)

像这样修改你的追加方法(@gtlambert和@zondo提到):

    # Was trying to append just one 0 to numbers <10
    file_number.zfill(4)

Python string zfill

答案 1 :(得分:1)

正如你在评论中所说,str.zfill是一种可能而简单的解决方案。

您只需要更改getfiles功能:

def getFiles(files):
    for file in files:
        file_start, file_number, file_end = file.split('-')
        num = file_number.split().zfill(4)  # num is 4 characters long with leading 0

        new_file = "{}- {} -{}".format(file_start, num, file_end)
        # rename or store the new file name for later rename