Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 17.01.2020, 00:58   #1
tukanen
 
Регистрация: 17.01.2020
Сообщений: 6
По умолчанию Сортировка *.txt files в папке по строкам.

В папке 60 тысяч .txt files .
Как можно сортировать ..
Если файлы имеют 50 строк то пермеситить их другую папку.
Спасибо за помощь за ранее.
tukanen вне форума Ответить с цитированием
Старый 17.01.2020, 12:13   #2
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 531
По умолчанию

Открывать файл на чтение и считать строки, если больше 50, то закрывать и переносить.
Но т.к. количество файлов большое лучше использовать многопоточность.
Arkuz вне форума Ответить с цитированием
Старый 17.01.2020, 14:56   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 531
По умолчанию

Ну как-то так. Готовый пример в приложенном ZIP архиве.
Код:
import os
import shutil

def calc_file_strings(filename):
    counter = 1
    with open(filename) as f:
            for line in f:
                if counter == 5:
                    return True
                counter += 1

app = os.path.abspath(os.path.dirname(__file__))
files = os.listdir(os.path.join(app, 'files'))

print('START')
i = 0
while i < len(files):
    cur_file = os.path.join(app, 'files', files[i])
    if calc_file_strings(cur_file):
        shutil.move(cur_file, os.path.join(app, 'move', files[i]))  
        print(f' - File "{files[i]}" moved')        
    i += 1

print('FINISH')
Вложения
Тип файла: zip test.zip (1.3 Кб, 2 просмотров)
Arkuz вне форума Ответить с цитированием
Старый 17.01.2020, 21:51   #4
ViktorR
Участник клуба
 
Регистрация: 23.10.2010
Сообщений: 1,457
По умолчанию

А какова длинна строки?
В текстовом файле символ - байт + 2-а символа CR и LF.
Может быть и один CR.

Можно попытаться через размер файла.
Если размер файла больше заданного, то ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 18.01.2020, 13:28   #5
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 531
По умолчанию

Цитата:
Сообщение от ViktorR Посмотреть сообщение
Если размер файла больше заданного, то ...
Как раз не стал предлагать такой вариант, т.к. строки могут быть разной длины и размер файла будет меняться.
Arkuz вне форума Ответить с цитированием
Старый 21.01.2020, 21:12   #6
sorokousov
Новичок
Джуниор
 
Регистрация: 21.01.2020
Сообщений: 6
По умолчанию

Так будет наверняка:
Код:
import os


less = 'less50'
os.path.exists(less) or os.makedirs(less)
dir_less = os.path.join(os.getcwd(), less)

for file in os.listdir(path='.'):
    if os.path.isdir(file):
        continue
    r_file = open(file, 'rb').read().splitlines()
    if len(r_file) <= 6:
        os.rename(os.path.join(os.getcwd(), file), os.path.join(dir_less, file))
Не будет ошибки с двоичными файлами.
sorokousov вне форума Ответить с цитированием
Старый 04.02.2020, 01:53   #7
tukanen
 
Регистрация: 17.01.2020
Сообщений: 6
По умолчанию

Arkuz, Очень большое спасибо!!!
Это работает.
tukanen вне форума Ответить с цитированием
Старый 04.02.2020, 01:53   #8
tukanen
 
Регистрация: 17.01.2020
Сообщений: 6
По умолчанию

Arkuz,
И очень понятно ..
tukanen вне форума Ответить с цитированием
Старый 04.02.2020, 01:55   #9
tukanen
 
Регистрация: 17.01.2020
Сообщений: 6
По умолчанию

ViktorR,
Arkuz помог. Спасибо ему
tukanen вне форума Ответить с цитированием
Старый 04.02.2020, 02:08   #10
tukanen
 
Регистрация: 17.01.2020
Сообщений: 6
По умолчанию

sorokousov,
Спасибо большое за оказанную помощью
tukanen вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите, как в обозревателе решений отобразить external dependenkies header files resource files source files readme Dimka-novitsek Visual C++ 0 05.12.2013 18:52
Как узнать путь к папке Program Files Miller-1981 C++ Builder 3 21.07.2012 11:35
Сортировка в stringgrid по определенныым строкам. F.A.(tm) Общие вопросы Delphi 2 06.02.2011 19:14
СОРТИРОВКА ПО СТРОКАМ (по горизонтали) ... provodnikam Microsoft Office Excel 7 03.09.2009 13:17


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS