Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.07.2020, 13:04   #1
tukanen
Пользователь
 
Регистрация: 16.01.2020
Сообщений: 12
По умолчанию Перенос всех файлов, содержащих слово END, в другую папку

Как можно в папке где много файлов. Все файлы которые сожержать слово "END". Перемеситить в другую папку.
Спасибо.
tukanen вне форума Ответить с цитированием
Старый 23.07.2020, 01:04   #2
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

например, написать cmd-скрипт или набрать ручками в командной строке.
Типа:
Код:
 move d:\data\*end??.* e:\myNewFolder
Запусти CMD. Например так: Win + R и написать команду cmd и нажать Enter или Ok.
Набери: move /? - Это подсказка по команде.

Символы * и ? имеют смысл.
* - любое число символов или их отсутствие
? - один символ (любой допустимый для именования файлов)

PS: Или вам именно на Python надо? Тогда возьмите модуль OS.
Поиск "модуль os python" вам в помощь.
Как-то так, ...

Последний раз редактировалось ViktorR; 23.07.2020 в 01:07.
ViktorR вне форума Ответить с цитированием
Старый 23.07.2020, 10:00   #3
tukanen
Пользователь
 
Регистрация: 16.01.2020
Сообщений: 12
По умолчанию Нужно в Python.

этот code позволяет выделить все файлы содержащие слово"EXCHANGED" . Но я не умею как то переместить их
в другую папку.

Код:
import os
import shutil

rootdir=('C:\\SOURCE\\')
dst=('C:\\SOURCE\\\Нужныефайлы\\')

for folder, dirs, files in os.walk(rootdir, dst):
    for file in files:
        if file.endswith('.txt'):
            fullpath = os.path.join(folder, file)
            with open(fullpath, 'r') as f:
                for line in f:
                    if 'EXCHANGED' in line:
                        print(fullpath)
                        break

Последний раз редактировалось BDA; 24.07.2020 в 02:21. Причина: добавление тега
tukanen вне форума Ответить с цитированием
Старый 23.07.2020, 21:18   #4
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Я вот построил запрос вида "переместить файлы python" и получил кучу предложений.
Посмотрите что там надо для вашего случая. Кроме этого, вероятно следует воспользоваться регуляркой.
И да, следует понимать, что некоторые файлы могут быть недоступны для, например, переноса из-за отсутствия полномочий (прав).
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.07.2020, 00:00   #5
tukanen
Пользователь
 
Регистрация: 16.01.2020
Сообщений: 12
По умолчанию

Предложений могут быть
Я вот не понимаю ..
Как бы мне дописать этот код и голва моя болить. что я не умный такой.
И обращаюсь я ... Тем кто умный мне бы подсказал.
Спасибо за Помощь.

Последний раз редактировалось tukanen; 24.07.2020 в 15:05.
tukanen вне форума Ответить с цитированием
Старый 24.07.2020, 22:21   #6
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,304
По умолчанию

Появилось немного времени и решил попробовать.
Получилось то, что получилось.
Для полноты картины ещё что-то бы добавил, например, регулярки, чтобы можно было задавать маски файлов. Попробуй, развей дальше.
Дерзай.
Код:
import os
import os.path
import shutil as sh
# dest - место назначения
# source - источник
# sender - отправитель
def Fmove(Spath, Dpath, key = False):
    '''
    Перемещает файлы из папки Spath в папку Dpath.
    Если файл существует в Dpath, то проверяется ключ.
    Если ключ Истина, то файл в папке Dpath удаляется и
    новый файл перемещается. По умолчанию ключ False.
    папка отправления и папка назначения должны существовать.
    '''
    if not (os.path.exists(Spath) and os.path.exists(Dpath)):
        print("The path doesn't exist!")
        return False
    list = []
    list = os.listdir(path=Spath)            # Список объектов
    if not len(list):                        # пустой
        print('The folder is empty!')
        return False
    for i in list:                           # Для всех объектов
        if os.path.isfile(Spath + '\\' + i): # это файл
            strpath = Dpath + '\\' + i
            if (os.path.exists(strpath) and
                os.path.isfile(strpath)):    # есть в папке назначения
                if key:                      
                    try:
                        os.remove(strpath)   # удалим
                    except OSError:
                        print('File cannot be deleted!')
                else:
                    continue                 # следующий файл
            sh.move(Spath + '\\' + i, Dpath) # перемещаем файл
                
Mypath = 'c:\\ab'
Topath = 'e:\\ab_Tmp'
key = True
Fmove(Mypath, Topath, True)
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 24.07.2020, 22:58   #7
tukanen
Пользователь
 
Регистрация: 16.01.2020
Сообщений: 12
По умолчанию Спасибо.

Буду пробовать .. и может что то ... и найду.
Очень красивый code.
Спасибо.
tukanen вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C (СИ) - Замена всех максимальных элементов матрицы на число столбцов, содержащих ее минимальный элемен Anastasya555 Помощь студентам 0 29.05.2015 09:54
Вставить после всех строк, содержащих минимальный элемент массива, строку 2, 4, 6,… (Delphi) yana1213 Помощь студентам 10 15.05.2014 21:08
Переименование и перенос файлов в папку flyingbudda Общие вопросы Delphi 3 25.04.2014 09:47
не получается копировать .mp3 файл из папки в другую папку Тёма_) C# (си шарп) 14 16.12.2013 22:54
Посчитать количество строк содержащих определенное слово cloud.00 PHP 1 31.03.2012 12:25