使用控件复制多个文件

时间:2012-05-17 16:29:20

标签: python python-2.7

我想在一个目录中复制多个文件,并以500为增量复制和重命名该文件。例如,C:\ Pics(随机原始名称)中的前500个文件将重命名为500-1000和新目录它们被放置在称为500 ......。文件1000-1500将进入目录1000,依此类推。

当前代码不会重命名放置的文件,而是将其放入具有正确编号的新目录中。这只是一个开始。我相信下面的代码是一个好的开始,任何人都可以帮我修改以获得所需的结果吗?

import os, glob

target = 'C:\Pics'
prefix = 'p0'        
os.chdir(target)
allfiles = os.listdir(target)        
count = 500
for filename in allfiles:
    if not glob.glob('*.jpg'): continue
    dirname = prefix + str(count)
    target = os.path.join(dirname, filename)
    os.renames(filename, target)
    count +=1

1 个答案:

答案 0 :(得分:2)

os.listdir和glob.glob是类似的功能。它们都返回文件/目录列表,因此它们不属于同一个循环(至少不是你尝试使用它们的方式)。主要区别在于os.listdir只接受一个目录并从中返回*.*(减去。和..),其中glob.glob需要一个“globbing模式”,它可以包含* {限制正则​​表达式格式的{1}} ?。您可能在这里考虑的函数(而不是glob.glob)是fnmatch.fnmatch,它将globbing模式应用于单个文件名。

  

OS。的 listdir同时(路径)

     

返回包含目录中条目名称的列表   由路径给出。该列表按任意顺序排列。它不包括   特殊条目'。'和'..'即使它们存在于   。目录

     

可用性:Unix,Windows。

     

在版本2.3中更改:在Windows NT / 2k / XP和Unix上,如果path是Unicode对象,则结果>将是Unicode对象的列表。不可解码的文件名仍将作为字符串返回   对象。

     

水珠。的水珠(路径)

     

返回一个可能为空的路径名列表   匹配pathname,它必须是包含路径的字符串   规格。 pathname可以是绝对的(比如   /usr/src/Python-1.5/Makefile)或亲戚(如../../Tools//.gif),   并且可以包含shell样式的通配符。包含损坏的符号链接   结果(如在shell中)。

抱歉,实际上模拟文件并测试它太懒了,但后来我会为你做所有的工作。但这应该有效(或者是我认为你的目标是接近的)。 ;)

[]