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 ) перед заменой соответствующим исходным файлом. Любые файлы или каталоги, которые уже существуют в месте назначения, но не в источнике, остаются нетронутыми.

  • f.read, приходящий пустой
  • Чтение и добавление определенного содержимого
  • Чтение / запись файлов в Python
  • Как узнать, находится ли файл в `eof`?
  • Добавление папок в zip-файл с помощью python
  • Где Python сначала ищет файлы?
  • Python 2.7: как читать только несколько строк за раз из файла?
  • Python командной строки 'входной поток файла'
  • Python - лучший язык программирования в мире.