[英]Multi-Variable File Naming Convention
喂! 我試圖將文件夾中所有圖片的文件名更改為新的命名架構,以便我正在使用的程序可以識別它。 當前的命名模式為'cam1 _ ###。png',其中###是序列中的數字。 例如,第一張照片命名為“ cam1_000.png”。
我想要得到的是以下命名模式:'cam1_r ### _ ##### _ rgb.png',其中“ r ###”和“ ####”每次增加一個。 例如,文件夾“ cam1_000.png”中的第一張圖像將重命名為“ cam1_r000_0000_rgb.png”,而第100張照片將從“ cam1_099.png”重命名為“ cam1_r099_0099_rgb.png”
我覺得這應該超級簡單,但是我在格式化方面遇到了麻煩://這是我目前擁有的:
files = os.listdir(".")
i = 1
for file in files:
os.rename(file, file + 'r_'+i+'_'+i+'.png')
i = i+1
在此先感謝您的任何建議/重定向!
我建議在這里使用格式字符串 。 您創建一個代表您要使用的模式的字符串,然后使用您要替換的值作為參數調用該字符串的format()
方法。
在這種情況下,我認為您可以使用
"{0}r_{1:03d}_{1:04d}.{2}".format(base_filename, i, extension)
在格式代碼{1:03d}
, 1
告訴它要使用format()
哪個參數(零索引,因此1
表示第二個參數i
),冒號后面的部分告訴它如何格式化該參數: 0
表示包含前導零, 3
表示填充三個字符, d
表示將其格式化為整數。
請注意,您首先需要將文件名拆分為基數(例如cam1_000
)和擴展名( png
)。
您可以嘗試使用str.format
來str.format
輸出文件名的定義。 您也可以使用str.zfill
提供必要的零填充。
此外,您應將enumerate
用作計數器。
最后,使用os.path.splitext
從文件名中拆分名稱和擴展名很有用。
for i, file in enumerate(sorted(files), 1):
name, ext = os.path.splitext(file)
os.rename(file, '{0}_r{1}_{2}.{3}'.format(name.split('_')[0], str(i).zfill(3),
str(i).zfill(4), ext))
我很傻,所以這就是我得到的...希望,這將對嘗試這樣做的其他人有所幫助:D
files = os.listdir(".")
i = 0
for file in files:
alpha="%03d" % i
beta="%04d" % i
os.rename(file, 'cam1_r'+alpha+'_'+beta+'_rgb'+'.png')
i = i+1
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.