python - 如何在文件名中插入零以使它们的长度相同
问题描述
我想让一大批JPG文件都具有相同长度的文件名。然后将它们转换为PDF。前任。65-1A、66-10B、72-108C _> 65-001A、66-010B、72-108C。XX-XXXX 是目标长度,如果文件名称较短,则在破折号后插入正确数量的 0 以达到目标长度。
我尝试解析文件名,但我想先使文件名长度相同
def parseFilename(file):
baseFileName = os.path.splitext(file)[0]
parts = baseFileName.split('-')
year = parts[0]
sequence = 0
permitNumber = 0
pageNumber = 0
if len(parts) > 1:
if len(parts[1]) == 2:
permitNumber = (parts[1])[0:1]
pageNumber = (parts[1])[1:2]
if len(parts[1]) == 3:
permitNumber = (parts[1])[0:2]
pageNumber = (parts[1])[2:3]
if len(parts[1]) == 4:
permitNumber = (parts[1])[0:2]
pageNumber = (parts[1])[2:3]
sequence = (parts[1])[3:4]
permitNumber = '{0}_{1}'.format(year, permitNumber)
return (permitNumber, pageNumber)
由于文件名的长度不同,因此无法正确解析它们。我相信让它们都具有相同的命名格式可能会更容易。
解决方案
str.format()
的填充可以在这里提供帮助。例如,
>>> '{:0>4}'.format('1A')
'001A'
格式:0>4
说:
:
: 表示这是一个格式说明符0
: 用零填充>
: 右对齐4
: 最多填充四个字符
我们可以改变其中的几个来填充不同的字符和不同的宽度:
>>> '{:#>6}'.format('1A')
'####1A'
这是一个执行填充的示例函数。作为奖励,它可以处理缺失或额外的连字符字段。
def PadName(orig):
# Split into fields.
parts = orig.split('-')
# Make sure there are enough fields.
while len(parts) < 2:
# This added field will become all zeros.
parts.append('')
# Pad the first two fields appropriately; leave the rest alone.
parts[0] = '{:0>2}'.format(parts[0])
parts[1] = '{:0>4}'.format(parts[1])
# Join the fields back together.
return '-'.join(parts)
testNames = (
'72-108C', # Already formatted
'5-1A74', # First part short
'65-1A', # Second part short
'2-10C', # Both parts short
'5A1-1A74', # First part long
'5A-1A74C', # Second part long
'15-4-AA', # Extra field
'B', # Only one field
'', # Empty
)
for baseFileName in testNames:
padded = PadName(baseFileName)
print('{:10} > {:10}'.format(baseFileName, padded))
输出:
72-108C > 72-108C
5-1A74 > 05-1A74
65-1A > 65-001A
2-10C > 02-010C
5A1-1A74 > 5A1-1A74
5A-1A74C > 5A-1A74C
15-4-AA > 15-0004-AA
B > 0B-0000
> 00-0000
推荐阅读
- python - 将 Symengine I 转换为 python 1j
- python - 在不使用熊猫的情况下以可重用代码提取巨大的 csv 日志文件的有效方法(无内存读取)?
- javascript - 为什么使用猫鼬回调会导致两次保存数据?
- powershell - 如何使用 Powershell 将换行符分隔的文本文件转换为 csv
- php - 使用 PHP 客户端通过 Google API 客户端刷新令牌时出现“unauthorized_client”错误?
- c++ - c++:从静态库中创建共享对象
- android-studio - 更新android studio:预览添加了很多阴影
- protocol-buffers - 由相同记录值的 protobuf 序列化产生的字符串/字节串是否总是相同的?
- asp.net - 在中国(繁体)机器上使用 c# 更新 web.config 后的垃圾字符
- vue.js - 如何创建一个 UI,其中我有一个树视图来显示我的文件夹树和一个表格来显示我在 Vue.js 中的文件,同时能够拖放文件?