Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 10, 2019 13:32:58

PEHDOM
Зарегистрирован: 2016-11-28
Сообщения: 2196
Репутация: +  294  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Antonpython
shutil.copy(src, dst)
shutil.copy(src, dst) копирует только АДЫН файл,.
Antonpython
Кто-нибудь может написать полностью?
написать полностью что? вот простой пример , оно копирует только файлы с расширением pdf из папки ‘G:\1\3’ в папку ‘G:\1\145’ при этом папка ‘G:\1\145’ должна уже существавать, вложеные папки и файлы в них игнорируються.
 import os, shutil
path = 'G:\\1\\3'
moveto = 'G:\\1\\145'
for file_name in [f for f in os.listdir(path) if os.path.isfile(os.path.join(path, f))]:
    fname, ext =  os.path.splitext(file_name)
    if ext.lower() == '.pdf':
        shutil.copy(os.path.join(path, file_name), moveto)



==============================
Помещайте код в теги:
[code python][/code]
Бериегите свое и чужое время.

Отредактировано PEHDOM (Янв. 10, 2019 13:34:21)

Офлайн

#2 Янв. 13, 2019 22:53:34

uf4JaiD5
Зарегистрирован: 2018-12-28
Сообщения: 76
Репутация: +  4  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Каталоги /tmp/dir1 и /tmp/dir2.

 /tmp/dir1:
/tmp/dir1/OBC.T0
/tmp/dir1/OBC.T1
/tmp/dir1/OBC.TD/file1
 /tmp/dir2:
пусто

 from glob import glob
from shutil import move, copy2, copytree
from os.path import join, isfile, basename
dir1 = '/tmp/dir1'
dir2 = '/tmp/dir2'
COPY = True
MOVE = not COPY
files = glob(join(dir1, 'OBC.T*'))
for f in files:
	dst = join(dir2, basename(f))
	if COPY:
		if isfile(f):
			copy2(f, dst)
			# или
			#copy2(f, dir2)
		
		else:
		# isdir
			copytree(f, dst)
	
	if MOVE:
		move(f, dst)
Копирует или перемещает из dir1 в dir2 файлы и каталоги, подходящие по маске (в данном случае – начинающиеся на “OBC.T”, см glob).
Копирует, если COPY = True. Перемещает, если COPY = False.

Отредактировано uf4JaiD5 (Янв. 13, 2019 22:55:11)

Офлайн

#3 Янв. 16, 2019 14:07:48

Antonpython
Зарегистрирован: 2017-02-14
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

А как добавить в условие копирования дату и время?
Например, скопировать файлы с датой создания с - по

 from glob import glob
from shutil import move, copy2, copytree
from os.path import join, isfile, basename
dir1 = 'H:\\1'
dir2 = 'H:\\2'
COPY = True
files = glob(join(dir1, 'OBC.TskMdt*'))
for f in files:
    dst = join(dir2, basename(f))
    if COPY:
        if isfile(f):
            copy2(f, dir2)

Офлайн

#4 Янв. 17, 2019 20:40:13

uf4JaiD5
Зарегистрирован: 2018-12-28
Сообщения: 76
Репутация: +  4  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

 #
from glob import glob
from shutil import move, copy2, copytree
from os.path import join, isfile, basename, getctime
from datetime import date
dir1 = '/tmp/dir1'
dir2 = '/tmp/dir2'
COPY = True
MOVE = not COPY
files = glob(join(dir1, 'OBC.T*'))
for f in files:
	dst = join(dir2, basename(f))
	d = date.fromtimestamp(getctime(f))
	if d < date(2010,1,1) or date(2019,1,13) < d:
		print(f'Пропускаю {f}. Дата не подходит: {d}')
		continue
	if COPY:
		if isfile(f):
			copy2(f, dst)
			# или
			#copy2(f, dir2)
		
		else:
			#isdir
			copytree(f, dst)
	
	if MOVE:
		move(f, dst)

Отредактировано uf4JaiD5 (Янв. 17, 2019 20:45:11)

Офлайн

#5 Март 29, 2023 16:01:39

Igor.Igor
Зарегистрирован: 2023-03-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Подскажите, пожалуйста, если нужно скопировать файлы по нескольким маскам, например CRA, CRL, как это указать в коде.

Офлайн

#6 Март 29, 2023 18:26:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Igor.Igor
если нужно скопировать файлы по нескольким маскам, например CRA, CRL, как это указать в коде
  
>>> import os
>>> import glob
>>> 
>>> def get_files(dir_path, file_mask_list):
...     out = []
...     for mask in file_mask_list:
...         out.extend(glob.glob(os.path.join(dir_path, mask)))
...     return out
... 
>>> get_files('/etc', ['*.conf~', '*.deny'])
['/etc/vconsole.conf~', '/etc/locale.conf~', '/etc/hosts.deny', '/etc/at.deny', '/etc/cron.deny']
>>>



Офлайн

#7 Март 30, 2023 00:37:49

Igor.Igor
Зарегистрирован: 2023-03-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Спасибо за функцию, простите за уж совсем глупые вопросы, но я ранее не работал с python, да и програмированием особо не занимался. А сейчас появилась необходимость в небольшой оптимизации.

Получается код ниже копирует файлы, но только по одной маске, а у меня их получается 6, как мне правильно добавить фашу функцию?
Не ругайте за глупые вопросы)

 import glob
import shutil 
from os.path import join, isfile, basename
dir1 = 'C:/test1'
dir2 = 'C:/test2'
COPY = True
files = glob.glob(join(dir1, 'DSA*')) #и еще 5 таких масок 
for f in files:
    dst = join(dir2, basename(f))
    if COPY:
        if isfile(f):
            shutil.copy2(f, dir2)

Офлайн

#8 Март 30, 2023 03:35:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9715
Репутация: +  842  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Igor.Igor
как мне правильно добавить фашу функцию?
Я просто добавил функцию, ничего не исправлял.
  
import os
import glob
import shutil 
from os.path import join, isfile, basename
 
def get_files(dir_path, file_mask_list):
    out = []
    for mask in file_mask_list:
        out.extend(glob.glob(os.path.join(dir_path, mask)))
    return out
 
dir1 = 'C:/test1'
dir2 = 'C:/test2'
COPY = True
 
files = get_files(dir1, ['DSA*', 'DSB*']) #и еще 5 таких масок 
for f in files:
    dst = join(dir2, basename(f))
    if COPY:
        if isfile(f):
            shutil.copy2(f, dir2)
Тут просто вопрос: а что такое dst, зачем оно нужно, если не используется?



Отредактировано py.user.next (Март 30, 2023 03:38:19)

Офлайн

#9 Март 30, 2023 10:36:26

Igor.Igor
Зарегистрирован: 2023-03-29
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Скопировать файлы из одной папки в другую

Большое спасибо за помощь, все работает.
А dir убрал, все работает.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version