使用循环创建副本并重命名文件

时间:2014-01-29 00:57:42

标签: python loops

python noob在这里并且难倒。我正在尝试将文件从源目录复制到输出目录,重命名文件并为组中的每个成员重新循环所有这些。

到目前为止,我的输出只给出了john在组中的第一组文件。

有人能指出我做错了吗?请帮忙..

import os
import shutil
from glob import glob
import easygui as eg

groups = {'mark': ('john', 'lisa', 'craig', 'jessie'),}

title = 'Title'
msg = 'Choose Input Directory'
default = 'C\\:'
inputdir = eg.diropenbox(msg, title, default)

files = glob(inputdir + '/*.*')

x = input('How many copies?   ')
y = raw_input('Text for filename?   ')

otitle = 'Title'
omsg = 'Choose Output Directory'
odefault = 'C\\:'
outputdir = eg.diropenbox(omsg, otitle, odefault)

x = x - 1
z = 0

for members in groups['mark']:
    while x >= 0:
        for filename in files:
            shutil.copy(filename, outputdir)
        ofiles = glob(outputdir + '/*.*')
        for ofilename in ofiles:
            if '-' and 'Template' in ofilename:
                os.rename(ofilename, ofilename.replace('-', str(x)).replace('Template', y))
        x -= 1

    files = glob(outputdir + '/*.*')
    for filename in files:
        if 'person' in filename:
            os.rename(filename, filename.replace('person', groups['mark'][z]))
    z += 1    

1 个答案:

答案 0 :(得分:1)

在第一次迭代后,x已经0,因此您不会进入while循环。

我认为您希望存储副本数量,并在每次迭代后重置x

类似的东西:

copies = input('How many copies?   ')

 ...    
x = copies - 1

for members in groups['mark']:
    x = copies - 1        
    while x >= 0:
       ...