[英]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.