0

ファイルを .jpg から .png に自動的に変換する小さなスクリプトを作成しています。

import glob, os
import Image

basedir = "C:\Users\User\Desktop\\fimg\images\\"
prefix  = "picture"

def convert_png():
    for jpg in glob.glob(os.path.join(basedir, '*.jpg')):
        filename = f.rsplit('.')[-2]
        njpg = Image.open(basedir + '%s.jpg' % (filename))
        njpg.save(basedir + '%s.png' % (filename))

        print "CONVERTED: " + filename + '.png'

for i, f in enumerate(os.listdir(basedir), 1):
    convert_png()

しかし、これでは、次のファイルに移動する前に、変換されたメッセージをこの量だけ出力するため、ファイルを複数回 (約 10 回) 変換するようです。これを行うには何か問題がありますか?

C:\Users\User\Desktop\fimg>python test.py
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 16094.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
CONVERTED: 185500.png
4

1 に答える 1

1
import glob, os
import Image

basedir = "C:\Users\User\Desktop\\fimg\images\\"
prefix  = "picture"

def convert_png(base):
    njpg = Image.open(basedir + '%s.jpg' % base)
    njpg.save(basedir + '%s.png' % base)
    print "CONVERTED: " + base + '.png'

for i, f in enumerate(os.listdir(basedir), 1):
    base, ext = os.path.splitext(f)
    if ext == '.jpg': # found jpg file
        convert_png(base)

for問題は、ネストされたループにありました。それから呼び出された bottomには、convert_png別のループがありました。convert_png拡張子を持つファイル.jpgが見つかった場合にのみその関数を呼び出すことで、ループインを排除し、コードをいくらか簡素化しました。splitextを使用してファイル名をそのベースと拡張子に分割していることに注意してください。

于 2012-05-25T22:31:33.847 に答える