python基于文件nam中的文本字符将多个文件从一个文件夹移动到另一个文件夹

2024-05-11 10:25:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python很陌生。我一直在探索shutil模块,可以移动一般的东西。我的问题围绕着:

想象一下这样一个场景:在导出文件夹中有数百个文件。虽然所有文件都是不同的,但每个文件中有13个是针对特定供应商的。我想创建一个脚本,通过导出文件夹,评估每个文件名,抓取所有的苹果文件并将其放入苹果文件夹,英特尔文件并将其放入英特尔文件夹,等等。任何智慧将不胜感激。

我试图在shutil副本中使用通配符,但没有任何运气。

谢谢

JT公司


Tags: 模块文件苹果脚本文件夹文件名场景副本
3条回答

我能想到的最简单的解决方案是:

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)

目标文件夹需要存在。

import glob, shutil

for file in glob.glob('path_to_dir/apple*'):
    shutil.move(file, new_dst)


# a list of file types
vendors =['path_to_dir/apple*', 'path_to_dir/intel*'] 

for file in vendors:
     for f in (glob.glob(file)): 
         if "apple" in f: # if apple in name, move to new apple dir
             shutil.move(f, new_apple_dir)
         else:
             shutil.move(f, new_intel_dir) # else move to intel dir

假设文件名中有特定的字符串用于标识报表所涉及的供应商,则可以创建一个字典,将这些标识字符串映射到相应的供应商。例如:

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

这将在当前目录中创建一个为相应供应商命名的文件夹,并将该供应商的报告复制到那里。注意,这个例子使用s.lower()方法,这样供应商名称是否大写就不重要了。

相关问题 更多 >