Nano Hash - криптовалюты, майнинг, программирование

Как скопировать файлы с определенным расширением файла в папку в моем скрипте Python (версия 2.5)?

Я хочу скопировать файлы с определенным расширением в новую папку. У меня есть идея, как использовать os.walk, но конкретно, как мне это использовать? Я ищу файлы с определенным расширением файла только в одной папке (эта папка имеет 2 подкаталога, но файлы, которые я ищу, никогда не будут найдены в этих 2 подкаталогах, поэтому мне не нужно искать в этих подкаталогах) . Заранее спасибо.

17.11.2008

Ответы:


1
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)

Прочтите документацию модуля Shutil, чтобы выбрать функцию. который соответствует вашим потребностям (shutil.copy(), Shutil.copy2() или Shutil.copyfile()).

17.11.2008

2

Если вы не рекурсивно, вам не нужен walk().

Ответ Федерико с glob в порядке, если предположить, что у вас не будет каталогов с именем «something.ext». В противном случае попробуйте:

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)
17.11.2008
  • basename = os.path.normcase(basename) перед basename.endswith может быть полезно (в Windows). 19.11.2008

  • 3

    Это будет ходить по дереву с подкаталогами. Вы можете сделать проверку os.path.isfile, чтобы сделать его немного безопаснее.

    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))
    
    17.11.2008
  • использование .lower() в системах, чувствительных к регистру, является ошибкой (доминирует MS Windows, но это не весь мир). Вместо этого предпочтительнее os.path.normcase(file). 19.11.2008

  • 4

    Вот нерекурсивная версия с 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
    

    Пример:

    copyfiles(".", "test", "*.ext")
    
    18.11.2008

    5

    Скопируйте файлы с расширением "расширение" из srcDir в 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_))
    
    12.02.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..