Я хочу скопировать файлы с определенным расширением в новую папку. У меня есть идея, как использовать os.walk
, но конкретно, как мне это использовать? Я ищу файлы с определенным расширением файла только в одной папке (эта папка имеет 2 подкаталога, но файлы, которые я ищу, никогда не будут найдены в этих 2 подкаталогах, поэтому мне не нужно искать в этих подкаталогах) . Заранее спасибо.
Как скопировать файлы с определенным расширением файла в папку в моем скрипте Python (версия 2.5)?
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). Они жизненно важны для различных приложений, таких как интеллектуальные..