繁体   English   中英

在文件名中添加前导零

[英]Add leading zeros to filename

我有一个包含 1.000 多个不断更新的文件的文件夹。 我正在使用脚本根据文件总数向其中添加一个随机数,如下所示:

file_a
file_b

1_file_a
2_file_b

我想添加前导零,以便文件正确排序。 像这样:

0001_file_a
0010_file_b
0100_file_c

这是随机数脚本:

import os
import random

used_random = []

os.chdir('c:/test')
for filename in os.listdir():
    n = random.randint(1, len(os.listdir()))
    while n in used_random:
        n = random.randint(1, len(os.listdir()))
    used_random.append(n)
    os.rename(filename, f"{n}_{filename}")

我建议使用 f-strings 来完成这个。

>>> num = 2
>>> f"{num:04}_file"
'0002_file'
>>> num = 123
>>> f"{num:04}_file"
'0123_file'

我还将用列表理解替换以下内容。

 cleaned_files = [] for item in folder_files: if item[0] == '.' or item[0] == '_': pass else: cleaned_files.append(item)
cleaned_files = [item for item in folder_files if not item[0] in ('.', '_')]

您应该使用拆分后获得的列表的第一个元素:

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

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

像这样的东西应该有用......我希望这有帮助......

import re
import glob
import os
import shutil

os.chdir('/tmp')  # I played in the /tmp directory

for filename in glob.glob('[0-9]*_file_*'):
    m = re.match(r'(^[0-9]+)(_.*)$', filename)
    if m:
        num = f"{int(m.group(1)):04}"  # e.g. 23 convert to int and than format
        name = m.group(2)  # the rest of the name e.g. _file_a
        new_filename = num + name  # 0023_file_a
        print(filename + " " + new_filename)
        # Not sure if you like to rename the files, if yes:
        # shutil.move(filename, new_filename)

感谢用户https://stackoverflow.com/users/15261315/chris我更新了随机数脚本以添加前导零:

import os
import random

used_random = []

os.chdir('c:/Test')
for filename in os.listdir():
    n = random.randint(1, len(os.listdir()))
    while n in used_random:
        n = random.randint(1, len(os.listdir()))
    used_random.append(n)
    os.rename(filename, f"{n:04}_{filename}")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM