Как использовать строку f в местоположении пути - PullRequest
0 голосов
/ 08 мая 2020

Я просто хочу использовать переменную filename в моем f sting. Что мне здесь не хватает?

# generating file name
filename = 'AG' + datetime.date.today().strftime("%m%d%Y")

# saving file
df.to_csv(f'C:\Users\username\Documents\folder1\folder2\{filename}.csv', index=False, sep=',')

Ошибка:

    df.to_csv(f'C:\Users\username\Documents\folder1\folder2\{filename}.csv', index=False, sep=',')
              ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

Ответы [ 2 ]

1 голос
/ 08 мая 2020

Как упоминалось ранее, проблема, с которой вы столкнулись, связана с \ при построении строки f.

В качестве более solid подхода вы можете рассмотреть возможность использования pathlib для манипулировать путями.

Примеры:

import datetime 
from pathlib import Path, PureWindowsPath

filename = 'AG' + datetime.date.today().strftime("%m%d%Y")
fp=Path(r'C:/Users/username/Documents/folder1/folder2', filename+'.csv')
# you could actually use this unmodified to open the file on Windows...

print(PureWindowsPath(fp))
# show the Windows presentation of that path
# C:Users\username\Documents\folder1\folder2\AG05072020.csv
1 голос
/ 08 мая 2020

Проблема связана с обратными косыми чертами в строке, а не с форматированием fstring. Вам нужно избежать обратных косых черт в пути стиля Windows, используя \\, потому что одиночная обратная косая черта sh обозначает escape-символ, например \n для символа новой строки и \t для табуляции.

Как упоминалось в @dawg, вы также можете комбинировать f с r необработанной строкой , чтобы python не экранировал никаких символов.

...