use*_*240 11 python python-2.7
我是Python的新手.我一直在探索这个shutil模块,并且可以移动一般的东西.我的问题围绕着:
想象一下,在导出文件夹中有数百个文件的场景.虽然所有文件都是不同的,但每个文件中有13个是针对特定供应商的.我想创建一个遍历导出文件夹的脚本,评估每个文件名,抓取所有Apple文件并将它们放入Apple文件夹,Intel文件并将它们放入英特尔文件夹等.任何智慧都将非常感激.
我试图在shutil副本中使用通配符,但没有任何运气.
谢谢,
JT
And*_*nis 16
我能想到的最简单的解决方案:
import shutil
import os
source = '/path/to/source_folder'
dest1 = '/path/to/apple_folder'
dest2 = '/path/to/intel_folder'
files = os.listdir(source)
for f in files:
if (f.startswith("Apple") or f.startswith("apple")):
shutil.move(f, dest1)
elif (f.startswith("Intel") or f.startswith("intel")):
shutil.move(f, dest2)
Run Code Online (Sandbox Code Playgroud)
目标文件夹确实需要存在.
假设文件名中有特定的字符串来标识报告与哪个供应商相关,您可以创建一个字典,将这些标识字符串映射到适当的供应商。例如:
import shutil
import os
path = '/path/to/location'
vendorMap = {'apple': 'Apple',
'intel': 'Intel',
'stringID3': 'vendor3'}
files = os.listdir(path)
for f in files:
for key, value in vendorMap.iteritems():
if key in f.lower():
shutil.copy(f, path + '/' + value)
else:
print 'Error identifying vendor for', f
Run Code Online (Sandbox Code Playgroud)
这将在当前目录中创建一个文件夹,以适当的供应商命名,并将该供应商的报告复制到那里。请注意,此示例使用s.lower()方法,因此供应商名称是否大写并不重要。