#python #list #for-loop
Вопрос:
У меня есть каталог с несколькими файлами, которые выглядят как показано ниже, однако вы должны отметить, что на самом деле файл содержит более 100 000 записей. Каждый файл содержит дату в своем названии, например '20210101_filex', '20210102_filex', '20210103_filex'
, и т. Д.
Это данные ‘20210102_filex’
blue black red 250 red black blue 140 black yellow purple 700 orange blue blue 200
Это данные ‘20210101_filex’
blue black red 100 red black blue 100 black yellow purple 800 orange blue blue 900
У меня также есть список, который содержит следующие значения my_list = ['100', '1500', '7500']
Теперь я хочу следующее:
1. Если одно из значений my_list
встречается в файле row[3]
, я хочу добавить всю запись в new_list.
2. Если одно из значений my_list
не встречается в файле row[3]
, я хочу, чтобы python открыл файл в каталоге с датой за один день до этого в отношении файла, открытого в первом операторе if.
Это мой код:
my_directory = ['20210101_filex', '20210102_filex', '20210103_filex'] my_date = '20211102' my_list = ['100', '1500', '800'] new_list = [] for x in my_directory: if my_date in x: to_open_file = x with open(my_directory '/' to_open_file, 'r') as input: reader = csv.reader(input, delimiter = 't') for row in reader: if row[3] in my_list: new_list.append(row) #If none of the values in my_list are in the file then open one day before else: yesterday = datum_tijd_meting_xml - datetime.timedelta(1) yesterday = datetime.datetime.strftime(yesterday, '%Y%m%d') if yesterday in x: second_to_open_file = x with open(my_directory '/' second_to_open_file, 'r'): reader = csv.reader(input, delimiter = 't') for row in reader: if row[3] in my_list: new_list.append(row)
Как вы можете видеть в приведенном выше примере, 100, 1500 and 800
их нет, 20210102_filex.
поэтому я хочу, чтобы Python заглянул за день до 20210101_filex
этого и посмотрел, может ли он найти значения в этом файле и добавить их в список.
Мой желаемый результат:
my_list = [['blue', 'black', 'red', '100'], ['red', 'black', 'blue', '100']]
Моя проблема: Я точно не знаю, что происходит, прямо сейчас мой цикл, кажется, вложен, так что кажется, что он никогда не сможет открыть файл за день до этого.
Примечание: Я не хочу использовать для этого Панд, я бы предпочел держать все в курсе.