перемещение файлов 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 шт):
Вопрос сформулирован так что вряд ли может быть полезен кому либо другому на этом ресурсе, но я все равно отвечу. Я создал архив с папками "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