मैं एक अजगर स्क्रिप्ट का उपयोग कर फ़ोल्डर में फ़ाइलों के एक समूह पर कुछ सांख्यिकीय गणना करना चाहता हूं।

अब तक मैं पूरे फ़ोल्डर का चयन करने, फाइलों को सॉर्ट करने और मेरी गणना करने में सक्षम हूं।

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

कोई विचार?

0
Tiziano Fiorucci 4 सितंबर 2018, 16:19

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))
0
Tobey 4 सितंबर 2018, 16:51

सबसे पहले आप उस दिनांक सीमा में दिनांक की एक सूची इस प्रकार बना सकते हैं:

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

अब आप फाइलें पढ़ सकते हैं कि आपके पास नाम हैं, मुझे लगता है कि आपको यही चाहिए :)

0
Imtinan Azhar 4 सितंबर 2018, 16:51