【问题标题】:How to copy files of a certain type in python如何在python中复制某种类型的文件
【发布时间】:2013-05-03 00:38:27
【问题描述】:

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

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

【问题讨论】:

  • 你为什么需要 python?
  • 你有什么系统?

标签: python


【解决方案1】:

使用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)))

【讨论】:

    【解决方案2】:
    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)
    

    【讨论】:

    • 我建议使用 copy2 最好保留每个文件的所有元数据。
    • 有时会更好,有时则不需要。执行 copystat() 不是零资源命令。虽然如果他们愿意,当然欢迎原始海报使用 copy2。
    猜你喜欢
    • 2013-09-17
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多