Программа выбора файла для сортировки по дате
Я хочу выполнить некоторые статистические вычисления для группы файлов в папке, используя скрипт Python.
До сих пор я могу выбрать всю папку, отсортировать файлы и выполнить мои вычисления.
def numericalSort(value):
parts = numbers.split(value)
parts[1::2] = map(int, parts[1::2])
return parts
for infile in sorted(glob.glob('*.txt'), key=numericalSort):
if infile == "log.txt":
continue
print "Current File Being Processed is: " + infile
log.write("~~File " + infile + " has been Opened Succesfully \n")
with open(infile, "r") as f:
next(f)
#print "file has been opened" + infile
for line in f:
Теперь я хочу разрешить пользователю вводить начальную и конечную дату и выполнять те же операции в выбранный интервал времени.
Файлы названы как следовать
countlog-2018-06-09.txt
Есть идеи?
2 ответа
Использовать input
флаг для записи на стандартный ввод. Вы также можете выполнить проверку ввода. Вот код, который вы можете адаптировать к вашим требованиям.
import re
from datetime import datetime
date_format = '%Y-%m-%d'
date_regex = r'([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))'
def validate_date_input(date_type='start'):
while True:
start_date = input('Enter a valid {} date in format YYYY-MM-DD\n'.format(date_type))
try:
date = datetime.strptime(start_date, date_format)
except ValueError:
print('"{}" is not in format YYYY-MM-DD. try again\n'.format(start_date))
else:
return date
if __name__ == '__main__':
start_date = validate_date_input(date_type='start')
end_date = validate_date_input(date_type='end')
file_name = 'countlog-2018-06-09.txt'
file_re = re.search(date_regex, file_name)
file_date = datetime.strptime(file_re.group(0), date_format)
if start_date <= file_date <= end_date:
print('Working on {}'.format(file_name))
Сначала вы можете создать список дат в этом диапазоне дат следующим образом:
#generate all dates from date1 to date2
import datetime
date1 = '2011-05-03'
date2 = '2011-05-10'
start = datetime.datetime.strptime(date1, '%Y-%m-%d')
end = datetime.datetime.strptime(date2, '%Y-%m-%d')
date_ranges=[]
step = datetime.timedelta(days=1)
while start <= end:
date_ranges.append(start.date())
start += step
затем вы можете использовать эти диапазоны дат для генерации имен текстовых файлов
text_file_names = ["countlog-"+str(the_date)+".txt" for the_date in date_ranges]
Вы можете читать файлы теперь, когда у вас есть такие имена, я думаю, это то, что вам нужно:)