Python 日期排序文件选择程序

Python 日期排序文件选择程序,python,file,sorting,date,file-management,Python,File,Sorting,Date,File Management,我想使用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 infil

我想使用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

有什么想法吗?

使用
输入标记写入stdin。您可能还希望执行输入验证。下面是一些可以适应您的需求的代码

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))
重新导入
从日期时间导入日期时间
日期\格式=“%Y-%m-%d”
date_regex=r'([12]\d{3}-(0[1-9]| 1[0-2])-(0[1-9]|[12]\d|3[01])”
def验证日期输入(日期类型='start'):
尽管如此:
开始日期=输入('以YYYY-MM-DD\n.格式输入有效的{}日期。'格式(日期类型))
尝试:
date=datetime.strtime(开始日期,日期格式)
除值错误外:
打印(“{}”的格式不是YYYY-MM-DD。请重试\n。格式(开始日期))
其他:
返回日期
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
开始日期=验证日期\u输入(日期\u type='start')
结束日期=验证日期输入(日期类型为结束)
文件名='countlog-2018-06-09.txt'
file\u re=re.search(日期、文件名)
file_date=datetime.strtime(文件组(0),日期格式)

如果开始日期,您可以生成该日期范围内的日期列表,如下所示:

#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]