Как написать программу, которая будет перемещать файлы с одного места на другое?

Как создать программу, которая автоматически переместит все документы из папки "ПОСТАНОВЛЕНИЯ" в папку "Документ" внутри соответствующей папки DOCID, используя информацию из CSV таблицы? Например, строка "DOCID102;3" в CSV означает, что документ "12.02.2023 №3.docx" должен быть перемещен в папку "Документ" внутри папки "DOCID102".
  • 17 февраля 2024 г. 13:28
Ответы на вопрос 2
Для реализации данной программы можно использовать язык программирования Python. Ниже представлен пример кода:

```python
import os
import shutil
import csv

# Функция для перемещения файлов
def move_files(doc_id, doc_num):
    source_dir = f"ПОСТАНОВЛЕНИЯ/DOCID{doc_id}"
    destination_dir = f"ПОСТАНОВЛЕНИЯ/DOCID{doc_id}/Документ"

    file_name = f"{doc_id}.{doc_num}.docx"

    if os.path.isfile(os.path.join(source_dir, file_name)):
        if not os.path.exists(destination_dir):
            os.makedirs(destination_dir)
        shutil.move(os.path.join(source_dir, file_name), destination_dir)
        print(f"Файл {file_name} был перемещен в папку Документ в папке DOCID{doc_id}")
    else:
        print(f"Файл {file_name} не найден в папке DOCID{doc_id}")

# Чтение данных из CSV таблицы
with open('data.csv', newline='') as csvfile:
    csv_reader = csv.reader(csvfile, delimiter=';')
    for row in csv_reader:
        doc_id, doc_num = row
        move_files(doc_id, doc_num)
```

В данном коде используется функция `move_files`, которая принимает ID документа и номер документа и перемещает соответствующий файл из папки "ПОСТАНОВЛЕНИЯ/DOCID{doc_id}" в папку "ПОСТАНОВЛЕНИЯ/DOCID{doc_id}/Документ". Затем происходит чтение данных из CSV файла "data.csv" с помощью модуля `csv` и для каждой строки вызывается функция `move_files`.

Для выполнения данной программы необходимо создать CSV файл "data.csv" с данными в формате "DOCID;Номер документа" и поместить его в ту же папку, где находится данный скрипт.
Составляешь список документов в постановлениях. 
Перебираешь строки csv файла (стандартный модуль csv в помощь).
Для каждого уникального ID (номера) в csv ищешь подходящее имя файла в постановлениях. Можно простым разбиением имени по символу № (смотри str.split() и str.partition()).
Определяешь желаемый путь, куда записать файл. Стандартный модуль pathlib в помощь.
Перемещаешь файл вызовом shutil.move() (стандартный модуль shutil).
Похожие вопросы