Можно ли найти предыдущее сохраненное время, используемое datetime.datetime.now () для сохранения в Python? - PullRequest
0 голосов
/ 03 августа 2020

Я читаю некоторые данные и сохраняю их в файлах .xlsx, используя следующий код:

name_file = path + str(datetime.datetime.now()).replace(':','-').replace(' ','_')
point_index = name_file.find('.')
name_file = name_file[:point_index ] + '.xlsx'
link = 'http://...'
resp = requests.get(link)
output = open(name_file, 'wb')
output.write(resp.content)
output.close()  

Я хочу загрузить последние 2 или 3 или любое количество сохраненных файлов и сравнить их вместе. если мы считаем, что name_file = path + str(datetime.datetime.now()).replace(':','-').replace(' ','_') состоит из имени последнего сохраненного файла, как можно загрузить предыдущий файл этого файла?

Я также должен упомянуть, что имена файлов не имеют регулярных расстояний . Они выглядят так:

2020-08-02_10-23-46.xlsx
2020-08-02_10-23-58.xlsx
2020-08-02_10-24-09.xlsx
2020-08-02_10-24-49.xlsx
2020-08-02_10-25-00.xlsx

Ответы [ 2 ]

1 голос
/ 03 августа 2020

Вы можете попробовать что-то вроде

return sorted(os.listdir(path), key=lambda x: os.path.getctime(os.path.join(path, x)))[-3:]

где -3: количество файлов из хвоста (последние 3). Вы также можете использовать любой другой вид нарезки.

1 голос
/ 03 августа 2020

Если все файлы xlsx в текущем каталоге созданы в результате описанного вами процесса, я предлагаю вам просто отсортировать файлы по их именам (которые также будут размещены в хронологическом порядке в соответствии с тем, как вы их назвали), затем выберите последние 2 или любое количество файлов, которое вы хотите.

Например:

import os
selected = sorted(filename for filename in os.listdir('.') if filename.endswith('.xlsx'))[-2:]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...