我想在一个目录中复制多个文件,并以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
答案 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中)。
抱歉,实际上模拟文件并测试它太懒了,但后来我会为你做所有的工作。但这应该有效(或者是我认为你的目标是接近的)。 ;)
[]