如何在路径位置使用 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 所述,您还可以将 f
与 r
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
我只是想在我的 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 所述,您还可以将 f
与 r
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