9

私は 35 個のフォルダーを持っており、各フォルダーには 50 個の画像が含まれており、すべての画像には異なる名前が付いていcopy(3), rename, youanemます。すべてのフォルダー内のすべての画像の名前をシーケンス番号に変更したい、つまり、フォルダー0には 50 個の画像が含まれており、0-49 のような番号を付け、残りのフォルダーとその画像にも同じ番号を付ける必要があります。フォルダ名は 0 ~ 9、次に AZ です。

これをプログラムすることは可能ですか、それとも手動で行う必要があります

これは私の最初の試みです。完全には試していません。

from os import rename, listdir

folder = "D://images//"
fnames = listdir('.')

for fname in fnames:
    if fname.startswith(folder):
        rename(fname, fname.replace(name, '', 1))

名前を付ける方法がわかりません

ありがとう

4

12 に答える 12

4

os.walk を使用できます。

for root, dirs, files in os.walk(folder):
    for i,f in enumerate(files):
        absname = os.path.join(root, f)
        newname = os.path.join(root, str(i))
        os.rename(absname, newname)

これはまさにあなたが望んでいたことをするはずです。

于 2013-09-14T19:30:46.657 に答える
2

別のオプションは、glob ライブラリを試すことです。

一連の画像の名前を変更する必要があった例:

import os
import glob

current_files = glob.glob('./*.png')

for i, filename in enumerate(current_files):
    os.rename(filename, './' + '0'*(2-len(str(i))) + str(i) + '.png')

上記の行の 2 は、先頭が 0 の数字の合計の長さです (画像が 100 未満であることを知っていたので、2 でした)。

于 2020-11-26T04:04:46.870 に答える