Перемещение всех файлов из одного каталога в другой с использованием Python




directory move (3)

Я хочу переместить все текстовые файлы из одной папки в другую, используя Python. Я нашел этот код:

import os, shutil, glob

dst = '/path/to/dir/Caches/com.apple.Safari/WebKitCache/Version\ 4/Blobs '
try:
    os.makedirs(/path/to/dir/Tumblr/Uploads) # create destination directory, if needed (similar to mkdir -p)
except OSError:
    # The directory already existed, nothing to do
    pass

for txt_file in glob.iglob('*.txt'):
    shutil.copy2(txt_file, dst)

Я хотел бы, чтобы он переместил все файлы в папке Blob . Я не получаю сообщение об ошибке, но он также не перемещает файлы.


Копирование файла ".txt" из одной папки в другую очень просто, и вопрос содержит логику. Только недостающая часть заменяется правильной информацией, как показано ниже:

import os, shutil, glob

src_fldr = r"Source Folder/Directory path"; ## Edit this

dst_fldr = "Destiantion Folder/Directory path"; ## Edit this

try:
  os.makedirs(dst_fldr); ## it creates the destination folder
except:
  print "Folder already exist or some error";

строки кода ниже скопируют файл с расширением * .txt из src_fldr в dst_fldr

for txt_file in glob.glob(src_fldr+"\\*.txt"):
    shutil.copy2(txt_file, dst_fldr);

Пожалуйста, взгляните на реализацию функции copytree которая:

  • Вывести список файлов каталога с помощью:

    names = os.listdir(src)

  • Скопируйте файлы с помощью:

    for name in names: srcname = os.path.join(src, name) dstname = os.path.join(dst, name) copy2(srcname, dstname)

Получение dstname не является обязательным, поскольку, если параметр destination указывает каталог, файл будет скопирован в dst с использованием базового имени файла из srcname .

Замените copy2 движением .


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

import glob, os, shutil

source_dir = '/path/to/dir/with/files' #Path where your files are at the moment
dst = '/path/to/dir/for/new/files' #Path you want to move your files to
files = glob.iglob(os.path.join(source_dir, "*.txt"))
for file in files:
    if os.path.isfile(file):
        shutil.copy2(file, dst)






move