Добавление метки времени к имени файла в Python - PullRequest
0 голосов
/ 19 марта 2020

Я хочу добавить метку времени к имени моего файла, чтобы было легче распознать последний файл.

Для этого я попробовал следующий код: -

csv_file = pd.read_csv('C:/Users/anujp/Desktop/sort/Entity_Resolution_Project/data/csv_files/all_web_final_ds.csv',usecols=['page_title'])
page_tile_list=list(csv_file['page_title'])

filename1 = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
timestamp_string = str(filename1)
with open('C:/Users/anujp/Desktop/sort/Entity_Resolution_Project/data/text_files/all_ds_pagetitles.txt' + timestamp_string,'w',encoding='utf-8',) as f:
    for item in page_tile_list:
        f.write('%s\n'%item)

к сожалению, я Я получаю сообщение об ошибке:

OSError: [Errno 22] Invalid argument: 'C:/Users/anujp/Desktop/sort/Entity_Resolution_Project/data/text_files/all_ds_pagetitles.txt2020-03-19 16:49:21'

Пожалуйста, помогите мне с этим.

Ответы [ 2 ]

1 голос
/ 19 марта 2020

pathlib позволяет легко управлять путями к файлам. Это может быть излишним для одного файла, но если вы работаете с последовательностью путей к файлам, это может упростить вещи.

import pathlib,datetime
dt = datetime.datetime.now().strftime("%Y-%m-%d %H-%M-%S")
fpath = 'C:/Users/anujp/Desktop/sort/Entity_Resolution_Project/data/text_files/all_ds_pagetitles.txt'
pp = pathlib.PurePath(fpath)

Простое разделение различных частей пути:

>>> print(pp.parent)
C:\Users\anujp\Desktop\sort\Entity_Resolution_Project\data\text_files
>>> print(pp.stem)
all_ds_pagetitles
>>> print(pp.suffix)
.txt
>>> 

Создайте новое имя и новый путь.

>>> newname = f'{pp.stem}-{dt}{pp.suffix}'
>>> pp.with_name(newname)
PureWindowsPath('C:/Users/anujp/Desktop/sort/Entity_Resolution_Project/data/text_files/all_ds_pagetitles-2020-03-19 09-35-57.txt')
>>>
1 голос
/ 19 марта 2020

Windows не допускает двоеточия в путях к файлам, поскольку символ зарезервирован как разделитель метки диска и пути к файлу, поэтому вы можете с помощью sh изменить timestamp_string на что-то вроде:

filename1 = datetime.now().strftime("%Y-%m-%d %H%M%S")
timestamp_string = str(filename1)
...