перемещение файлов python

помогите пожалуйста Я уже что только не перепробовал. Представьте: Каждый день приходит архив с вчерашним числом там 3 папки "OBI_H", "OBI_R", "OBI_V" в каждой из них есть файлы без расширения их нужно переместить в другие папки,как это сделать?

Вот первый пример кода:

from datetime import datetime, timedelta
import patoolib
import os


today = datetime.now()
yesterday = today - timedelta(1)
yesterday = yesterday.strftime('%d.%m.%Y')

path = 'D:/doc/ARHIW/'
rf = path + yesterday + '.rar'
in_dir = 'D:/doc/ARHIW/' + yesterday + '/' 'IN/'
patoolib.extract_archive(rf, outdir=in_dir)

in_obih = os.listdir(in_dir + yesterday + '/OBI_H.BANK')
in_obir = os.listdir(in_dir + yesterday + '/OBI_R.BANK')
in_obiw = os.listdir(in_dir + yesterday + '/OBI_W.BANK')
in_obr = os.listdir(in_dir + yesterday + '/OBR')
in_ooo = os.listdir(in_dir + yesterday + '/OSV_OSL_OAR')

mf_in_obir = in_dir + 'OBI_R.BANK/'
mf_in_obis = in_dir + 'OBI_S.BANK/'
mf_in_obiv = in_dir + 'OBI_V.BANK/'
mf_in_obr = in_dir + 'OBR_OBI/'
mf_in_osvs = in_dir + 'OSV_S.BANK/'

for f in in_obih:
    os.rename(f, mf_in_obis)

Ответы (1 шт):

Автор решения: Daniil Loban

Вопрос сформулирован так что вряд ли может быть полезен кому либо другому на этом ресурсе, но я все равно отвечу. Я создал архив с папками "OBI_H", "OBI_R", "OBI_V" и файлами внутри, затем внес небольшие изменения в код чтобы он заработал. Основная ошибка была в том что прежде чем работать с директорией нужно всегда убеждаться что она есть (в данном случае нужно создавать) ну и если я правильно понял логику то "in_obih" и т.п. идут без ".BANK" хотя не зная какой конктретно у Вас архив сложно судить, я судил по описанию в вопросе. Все правки прокомментированы в коде. Строчки которые не влияли на результат я убрал.

Возможно будет проще переименовывать распакованные директории чем файлы по отдельности (os.rename(in_dir + '/OBI_H', mf_in_obis))

from datetime import datetime, timedelta
import patoolib
import os

today = datetime.now()
yesterday = today - timedelta(1)
yesterday = yesterday.strftime('%d.%m.%Y')

path = 'D:/doc/ARHIW/'
rf = path + yesterday + '.rar'
in_dir = 'D:/doc/ARHIW/' + yesterday + '/IN/'
os.makedirs(in_dir) # создаем директорию
patoolib.extract_archive(rf, outdir=in_dir)

# убрано "+ yesterday"
in_obih = os.listdir(in_dir + '/OBI_H') # убрано расширение .BANK
in_obir = os.listdir(in_dir + '/OBI_R') # убрано расширение .BANK
in_obiw = os.listdir(in_dir  + '/OBI_V') # убрано расширение .BANK

mf_in_obis = in_dir + 'OBI_S.BANK/'
os.makedirs(mf_in_obis) # создаем директорию

for f in in_obih:
    # добавлен путь in_dir + '/OBI_H/'
    os.rename(in_dir + '/OBI_H/' + f, mf_in_obis + f)

после исполнения данного кода получаем такую картину

└── ARHIW
    ├── 30.06.2022
    │   └── IN
    │       ├── OBI_H
    │       ├── OBI_R
    │       │   ├── 1
    │       │   ├── 2
    │       │   └── 3
    │       ├── OBI_S.BANK
    │       │   ├── 1
    │       │   ├── 2
    │       │   └── 3
    │       └── OBI_V
    │           ├── 1
    │           ├── 2
    │           └── 3
→ Ссылка