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, как проверить файл пустым или нет
  • Как читать из zip-файла в zip-файле в Python?
  • Разделить имена файлов с помощью python
  • Откройте новый файл с нуля в PyCharm?
  • Ошибка перемещения файла с помощью shutil
  • Получить файл-объект из номера файла
  • Нарезка файла в Python
  • Чтение слов из .txt и подсчет для каждого слова
  • Как определить, является ли путь подкаталогом другого?
  • Запись шестнадцатеричных данных в файл
  • множественная отправка с сервера на клиентский python
  •  
    Interesting Posts for Van-Lav

    периодические задания сельдерея не выполняются

    Почему рекурсивный генератор не работает в Python 3.3?

    В дереве nltk как я могу получить доступ к родительскому элементу из дочернего элемента?

    Как предотвратить блокирование блока кода с помощью KeyboardInterrupt в Python?

    Карта NDB (callback, results_cursors = True)

    Извлечение исходных координат блендера (ORCO)

    Объект 'module' не имеет атрибута 'GeoSQLCompiler'

    Контроль скорости вращения вентилятора и определение внутренней температуры ПК с помощью питона?

    Почему эта документация API django-rest-swagger API не будет отображаться / работать правильно?

    Могу ли я вставлять графики matplotlib в Excel программно?

    Естественно сортировать Pandas DataFrame

    Сжатие каталога с использованием shutil.make_archive () при сохранении структуры каталогов

    Преобразование (YYYY-MM-DD-HH: MM: SS) дата времени

    JSON появляется как юникодные объекты в шаблоне Jinja2

    Печать символов не-ascii в python / jinja

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