Python – перемещение и перезапись файлов и папок

У меня есть каталог «Dst Directory», в котором есть файлы и папки, и у меня есть «src Directory», в котором также есть файлы и папки. То, что я хочу сделать, – переместить содержимое «src Directory» в «Dst Directory» и перезаписать anyfiles, которые существуют с тем же именем. Так, например, «Src Directory \ file.txt» необходимо перенести в «Dst Directory» и перезаписать существующий файл .txt. То же самое относится к некоторым папкам, перемещению папки и объединению содержимого с той же папкой в ​​каталоге dst,

В настоящее время я использую shutil.move для перемещения содержимого src в dst, но он не будет делать этого, если файлы уже существуют, и он не будет объединять папки; он просто поместит папку в существующую папку.

Обновление: чтобы сделать вещи более ясными; То, что я делаю, – это распаковать архив в каталог Dst, а затем переместить содержимое каталога Src и выполнить распаковку, эффективно обновляя файлы в zip-архиве. Это будет повторяться для добавления новых файлов или новых версий файлов и т. Д., Поэтому его необходимо перезаписать и слить

Решено: я решил свою проблему, используя distutils.dir_util.copy_tree (src, dst), это копирует папки и файлы из каталога src в каталог dst и перезаписывает / объединяет там, где это необходимо. Надеюсь, что это поможет некоторым людям!

Надеюсь, что это имеет смысл, спасибо!

2 Solutions collect form web for “Python – перемещение и перезапись файлов и папок”

Вместо этого используйте copy() , который желает перезаписать файлы назначения. Если вы хотите, чтобы первое дерево rmtree() , просто rmtree() его отдельно, как только вы закончите над ним.

http://docs.python.org/library/shutil.html#shutil.copy

http://docs.python.org/library/shutil.html#shutil.rmtree

Обновить:

Сделайте os.walk() над деревом источника. Для каждого каталога проверьте, существует ли он на стороне назначения, и os.makedirs() если он отсутствует. Для каждого файла просто shutil.copy() и файл будет создан или перезаписан, в зависимости от того, что подходит.

Это будет проходить через исходный каталог, создавать любые каталоги, которые еще не существуют в каталоге назначения, и перемещать файлы из источника в целевой каталог:

 import os import shutil root_src_dir = 'Src Directory\\' root_dst_dir = 'Dst Directory\\' for src_dir, dirs, files in os.walk(root_src_dir): dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1) if not os.path.exists(dst_dir): os.makedirs(dst_dir) for file_ in files: src_file = os.path.join(src_dir, file_) dst_file = os.path.join(dst_dir, file_) if os.path.exists(dst_file): os.remove(dst_file) shutil.move(src_file, dst_dir) 

Любые предварительно существующие файлы будут удалены сначала (через os.remove ) перед заменой соответствующим исходным файлом. Любые файлы или каталоги, которые уже существуют в месте назначения, но не в источнике, остаются нетронутыми.

  • Python - когда использовать файл vs open
  • как пропустить строки файла, если они пусты
  • Как получить измененную дату / время файла в Python?
  • Ошибка перемещения файла с помощью shutil
  • как найти целевой путь ссылки, если файл является файлом ссылки
  • Python - IOError: Разрешение отклонено:
  • Pandas Тип категориальных данных не ведет себя так, как ожидалось
  • см., если два файла имеют одинаковое содержимое в python
  •  
    Interesting Posts for Van-Lav

    Отсутствие завершения кода и подсветка синтаксиса в Pydev

    Назовите эту конструкцию языка python / ruby ​​(используя значения массива для удовлетворения функциональных параметров)

    Использование функции roll_apply на объекте DataFrame

    Как numpy.ndarray.transpose () переставляет ось массива nd?

    Почему операторы вывода Python образуют закрытие?

    Захват исключения при использовании инструкции Python with with – Part 2

    Может ли Cython скомпилировать EXE?

    Повторить-До тех пор, пока цикл в питоне или эквиваленте

    Преобразование списка в * args в Python

    Python: отображение локального часового пояса

    Смутно с списками python: они или не являются итераторами?

    Django: неверный аргумент ключевого слова для этой функции

    Установка numpy из формата колеса: «… не поддерживается колесо на этой платформе»

    Чтение определенного значения ячейки из excelsheet в python

    Чтение потока с IP-камеры с помощью cv2.VideoCapture ()

    Python - лучший язык программирования в мире.