簡體   English   中英

多變量文件命名約定

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM