How do I copy files with specific file extension t

2020-02-08 04:08发布

I'd like to copy the files that have a specific file extension to a new folder. I have an idea how to use os.walk but specifically how would I go about using that? I'm searching for the files with a specific file extension in only one folder (this folder has 2 subdirectories but the files I'm looking for will never be found in these 2 subdirectories so I don't need to search in these subdirectories). Thanks in advance.

标签: python file copy
5条回答
放荡不羁爱自由
2楼-- · 2020-02-08 04:30

Here is a non-recursive version with os.walk:

import fnmatch, os, shutil

def copyfiles(srcdir, dstdir, filepattern):
    def failed(exc):
        raise exc

    for dirpath, dirs, files in os.walk(srcdir, topdown=True, onerror=failed):
        for file in fnmatch.filter(files, filepattern):
            shutil.copy2(os.path.join(dirpath, file), dstdir)
        break # no recursion

Example:

copyfiles(".", "test", "*.ext")
查看更多
ら.Afraid
3楼-- · 2020-02-08 04:32

If you're not recursing, you don't need walk().

Federico's answer with glob is fine, assuming you aren't going to have any directories called ‘something.ext’. Otherwise try:

import os, shutil

for basename in os.listdir(srcdir):
    if basename.endswith('.ext'):
        pathname = os.path.join(srcdir, basename)
        if os.path.isfile(pathname):
            shutil.copy2(pathname, dstdir)
查看更多
够拽才男人
4楼-- · 2020-02-08 04:35
import glob, os, shutil

files = glob.iglob(os.path.join(source_dir, "*.ext"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dest_dir)

Read the documentation of the shutil module to choose the function that fits your needs (shutil.copy(), shutil.copy2() or shutil.copyfile()).

查看更多
甜甜的少女心
5楼-- · 2020-02-08 04:36

This will walk a tree with sub-directories. You can do an os.path.isfile check to make it a little safer.

for root, dirs, files in os.walk(srcDir):
    for file in files:
        if file[-4:].lower() == '.jpg':
            shutil.copy(os.path.join(root, file), os.path.join(dest, file))
查看更多
We Are One
6楼-- · 2020-02-08 04:57

Copy files with extension "extension" from srcDir to dstDir...

import os, shutil, sys

srcDir = sys.argv[1] 
dstDir = sys.argv[2]
extension = sys.argv[3]

print "Source Dir: ", srcDir, "\n", "Destination Dir: ",dstDir, "\n", "Extension: ", extension

for root, dirs, files in os.walk(srcDir):
    for file_ in files:
        if file_.endswith(extension):
            shutil.copy(os.path.join(root, file_), os.path.join(dstDir, file_))
查看更多
登录 后发表回答