Проблема: У меня есть куча файлов, которые были загружены из организации. На полпути через свой каталог данных организация изменила соглашение об именах (причины неизвестны). Я ищу создать сценарий, который будет принимать файлы в каталоге и переименовать файл таким же образом, но просто «вернуться один день».Python - переименовать файлы поэтапно на основе julian day
Вот пример того, как назван один файл: org2015365_res_version.asc
Что мне нужно логика изменить только год день (2015365
) в этом случае 2015364
. Эта логика должна охватывать несколько лет, поэтому 2015001
будет 2014365
.
Я думаю, я не уверен, что это возможно, так как он не работает с текущей датой, поэтому использование модуля, такого как datetime
, кажется неприменимым.
Частичная логика Я придумал. Я знаю, что в лучшем случае это рудиментарно, но он хотел нанести удар.
# open all files
all_data = glob.glob('/somedir/org*.asc')
# empty array to be appended to
day = []
year = []
# loop through all files
for f in all_data:
# get first part of string, renders org2015365
f_split = f.split('_')[0]
# get only year day - renders 2015365
year_day = f_split.replace(f_split[:3], '')
# get only day - renders 365
days = year_day.replace(year_day[0:4], '')
# get only year - renders 2015
day.append(days)
years = year_day.replace(year_day[4:], '')
year.append(years)
# convert to int for easier processing
day = [int(i) for i in day]
year = [int(i) for i in year]
if day == 001 & year == 2016:
day = 365
year = 2015
elif day == 001 & year == 2015:
day = 365
year = 2014
else:
day = day - 1
Помимо логики выше, я также наткнулся на функцию ниже от this поста, я не уверен, что будет лучшим способом совместить это с частичной логикой выше. Мысли?
import glob
import os
def rename(dir, pattern, titlePattern):
for pathAndFilename in glob.iglob(os.path.join(dir, pattern)):
title, ext = os.path.splitext(os.path.basename(pathAndFilename))
os.rename(pathAndFilename,
os.path.join(dir, titlePattern % title + ext))
rename(r'c:\temp\xx', r'*.doc', r'new(%s)')
Помогите мне, stackoverflow. Ты моя единственная надежда.