Как стать автором
Обновить
77.26
Bimeister
Цифровизация промышленных объектов

Python и Excel глазами НСИ

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров11K


Всем привет! Меня зовут Алмаз. Я специалист по НСИ (нормативно-справочной информации) в компании Bimeister.

Хотел бы поделиться своим небольшим опытом автоматизации некоторых рутинных задач при работе с различными файлами и Excel- базами данных.

Python

Предыстория

Сейчас довольно много материала по данному языку программирования. Порой новичку очень сложно понять, с чего начать и в какую сторону двигаться. По крайней мере, для работы в инженерной области, найти что-то полезное для меня было не очень просто. Я начал изучать основы языка Python на Freecodecamp.org.

Хороший бесплатный ресурс, однако требует знания английского или хотя бы желание его выучить. Сам курс назывался «Scientific Computing with Python», и вел его доктор Чак (Dr. Chuck, преподаватель Мичиганского университета). Доктор Чак очень просто и с юмором преподносит основные понятия и делится своим многолетним опытом для очень неискушенных учащихся.
Проучившись по несколько часов в неделю в течение нескольких месяцев, мне выпала возможность применить полученные навыки на практике.

Задача

В сетевой папке лежат сканы документов в формате .pdf. Периодически документы в эту папку добавляются. Необходимо отслеживать новые поступления документов и скачивать их для дальнейшей обработки и загрузки в ПО на сервере клиента.
Так как количество документов может быть от нескольких единиц до нескольких сотен, то вручную данную работу сделать довольно проблематично. А если это надо делать ежедневно…

Решение

Создаем список файлов, используя Excel. Работа с Excel будет рассмотрена в следующей части статьи. При добавлении в папку новых файлов создаем еще один список с помощью Excel.

Сравниваем со старым списком и в итоге у нас появляется список только новых файлов.
Такой список будет иметь строки в следующем виде:

\vol02\Цех №46\1_ОП\05_КИПиА\1.3.46.U01.451.ПО.Паспорт на средство измерения СТМ-10.pdf

Далее создаем текстовый файл в формате .txt и копируем в него наш список. Назовем этот файл List.txt:

\vol02\Цех №46\1_ОП\05_КИПиА\1.3.46.U01.451.ПО.Паспорт на средство измерения СТМ-10.pdf
\vol02\Цех №46\1_ОП\05_КИПиА\1.3.46.U01.452.ПО.Паспорт на средство измерения СТМ-10.pdf
\vol02\Цех №46\1_ОП\05_КИПиА\1.3.46.U01.453.ПО.Паспорт на средство измерения СТМ-10.pdf

Помещаем этот файл в папку с будущим файлом программы на Python. Для написания кода я использую “PyCharm Community Edition”).

Запускаем Pycharm, создаем новый файл с расширением “.py” – Main.py.

Нам понадобится модуль “shutil”. По нему много информации в сети. В моем случае этот модуль пришлось найти в интернете и положить в папку с файлом программы.

Далее все просто… Привожу ниже код программы:

import shutil
handle= open('list.txt', encoding='utf-8')
dest='D:\\Паспорта 55 цех\\Общ'
for line in handle:
    src = line.strip()
    #print(src)
    shutil.copy(src, dest)
    print("Copying file..",src[75:])
print('Finished')

Теперь разберем код программы подробнее:

  • import shutil – импортируем модель shutil;

  • handle открывает нам файл list.txt. Декодируем его в utf-8 – для исключения ошибок кодировки;

  • dest – указываем путь, куда скачивать файлы;

  • for line in handle – перебираем строки нашего списка с файлами в цикле;

  • src = line.strip() – метод .strip разбивает текст, при этом при каждой итерации цикла в переменную src записывается адрес очередного файла;

  • #print(src) – закомментированный код. Если убрать символ #, то можно выводить на экрать текущую строку списка с адресом файла при каждой итерации цикла;

  • shutil.copy(src, dest) – метод “.copy” модуля “shutil”, который непосредственно копирует файл из папки “src” в папку “dest”;

  • print("Copying file..",src[75:]) – выводим на экран название файла( последние 75 символов строки из списка файлов);

  • print('Finished') – выводим на экран уведомление об окончании процесса копирования.

Также обращаю внимание, что в коде программы адрес папки указан, используя двойные символы “//”, а в списке файлов – используется одинарный “/”. Это связано с особенностью кодировки символов в Python. Если данный вопрос интересен, то можно поискать материалы по теме “Escape последовательности”.

Excel

Задача

Получить список только новых файлов в сетевой папке из первой части статьи.

Решение

К примеру, сегодня в сетевую папку выложены файлы сканов документов. Завтра планируется, что в папку будут выложены еще файлы. При этом на дату создания ориентироваться нельзя, так как документы могут быть отсканированы в один день, а выложены в папку для скачивания через несколько дней. При этом более “ранние” файлы могут быть выложены позже.

Запускаем Excel. На вкладке “Данные” кликаем “Получить данные”, затем “Из файла”/ “Из папки” и выбираем нужную папку.
















После загрузки данных, открывается окно:

Нажимаем “Загрузить” и видим:

Нас интересуют столбцы Name (Имя файла) и Folder path ( Адрес папки). Для получения адреса файла необходимо “соединить” эти два столбца. В ячейке G1 пишем формулу =F1&A1.

В итоге мы получим список в виде строк следующего вида:

\vol02\5_Цех №5\2_Установка производства кислорода\05_КИПиА\1.1.05.020.05.TIRSA 2-2.ПО.Паспорт на устройство контроля и регистрации ФЩЛ-502.pdf

Мы получили список полных адресов файлов, которые на сегодняшний день присутствуют в папке. Далее можно скачать эти файлы с помощью Python, как было объяснено выше.

Через несколько дней, когда нам сообщат, о том что выложены новые файлы в папку, создаем точно такой же файл.
Затем копируем данные из нового файла в “старый” и вставляем данные в одну таблицу ниже существующих данных. После этого с помощью инструмента “ Удалить дубликаты“, оставляем адреса только новых файлов.

Далее повторяем скачивание с помощью Python.

Таким образом, мы можем довольно быстро находить новые файлы в папке с уже существующими файлами и быстро их скачивать. Разумеется, данный метод не является идеалом. Если есть какие-то наработки в данной области, прошу поделиться в комментариях.

Надеюсь, данная статья будет полезна тем, кто хочет упростить свои повседневные задачи и начать применять современные технологии при работе с данными.

Теги:
Хабы:
Всего голосов 9: ↑9 и ↓0+9
Комментарии39

Публикации

Информация

Сайт
bimeister.com
Дата регистрации
Дата основания
Численность
201–500 человек
Местоположение
Россия

Истории