如何在路径位置使用 f 字符串

How to use f string in a path location

我只是想在我的 f sting 中使用 filename 变量。 我在这里错过了什么?

# 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

问题在于字符串中的反斜杠,而不是 fstring 格式。您需要使用 \ 转义 Windows 样式路径中的反斜杠,因为单个反斜杠表示转义字符,例如 \n 表示换行符,\t一个选项卡。

如@dawg 所述,您还可以将 fr raw-string 结合使用,因此 python 不会转义任何字符。

如 tiega 所述,您遇到的问题是 \ 在构造 f 字符串时的问题。

作为更可靠的方法,您可以考虑使用 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