如何在python中复制某种类型的文件

时间:2013-05-03 00:38:27

标签: python

我有一个文件夹(包含其他子文件夹),我只想将.js文件复制到另一个现有文件夹(这也有与第一个文件夹具有相同文件夹结构的子文件夹,除了这个文件夹只有文件夹,所以没有文件)

我怎么能用python做到这一点?我尝试了shutil.copytree,但它失败了,因为某些文件夹已经存在。

2 个答案:

答案 0 :(得分:2)

使用os.path.splitextglob.iglob

glob.iglob(pathname)
  

返回一个迭代器,它产生的值与glob()相同   实际上同时存储它们。

我建议使用os.path.splitext的解决方案,与os.walk一起走。我使用os.path.relpath来查找重复树中的相对路径。

source_dir是源最上面的源文件夹,dest_dir是最上面的目标文件夹。

import os, shutil, glob

source_dir = "F:\CS\PyA"
dest_dir = "F:\CS\PyB"

for root, dirnames, filenames in os.walk(source_dir):
    for file in filenames:
        (shortname, extension) = os.path.splitext(file)
        if extension == ".txt" :
            shutil.copy2(os.path.join(root,file), os.path.join(dest_dir,   
                         os.path.relpath(os.path.join(root,file),source_dir)))

答案 1 :(得分:1)

from glob import glob
from shutil import copy
import os

def copyJS(src, dst):
    listing = glob(src + '/*')
    for f in listing:
        if os.path.isdir(f):
            lastToken = f.split('/')[-1]
            copyJS(src+'/' + lastToken, dst+ '/' + lastToken)
        elif f[-3:] == '.js':
            copy(f, dst)