我试图将图形从Matplotlib保存到驱动器上的文件夹位置,但从文件路径中得到一些不需要的行为
这就是我设置的使用真正的字符串类型来处理“\”转义字符的运行方式
save_path = r"\\nemesis\Network Planning\Team Members\Taylor\2020_04_23 - COVID Impact
Adjustment\Test Stores\State and Region Growth - " +str(Store_ID)+ ".jpg"
print(save_path)
plt.savefig(save_path)
print语句显示正确的文件路径字符串
但是,当我运行savefig时,python似乎会在字符串中的每个现有斜杠旁边添加一个额外的斜杠,并给出FileNotFound错误。完整的错误记录如下
FileNotFoundError:[Errno 2]没有这样的文件或目录:'\\\nemesis\\Network Planning\\Team Members\\Taylor\\2020\u 04\u 23-新冠疫情影响调整\\测试商店\\州和地区增长-17062.jpg'
我对发生这种情况的原因感到困惑,并且尝试了一系列不同的字符串方法,但似乎都没有奏效
非常感谢您的帮助
为了回答你的问题,我需要解释一些原始字符串的背景知识。原始字符串只是在普通字符串中包含反斜杠的一种更简单的方法,而无需转义它们。例如,使用普通字符串语法定义将打印为“a\b\c”的字符串时,您需要写入
my_string = "a\\b\\c"
,但对于原始字符串,您只需要写入r“a\b\c”,但在这两种情况下,生成的字符串是相等的:打印字符串时,print()会排除使用常规语法重新创建字符串所需的额外反斜杠:
要查看适合重新创建的字符串的表示形式,请使用
repr(s)
:现在回答你的问题。当您使用print()时,您生成的原始字符串可能看起来像您想要的,因为它排除了额外的斜杠,但不是您想要的。首先,我不认为你的意思是在路径的开始有两个反斜杠
解决这个问题很简单:以不同的方式表示文件路径。要么使用普通字符串并手动转义所有反斜杠:
"\\nemesis\\Network Planning\\Team Members\\Taylor\\2020_04_23 - COVID Impact Adjustment\\Test Stores\\State and Region Growth - " +str(Store_ID)+ ".jpg"
,要么只使用os.path.join("\\nemesis", "Network Planning", "Team Members", "Taylor", "2020_04_23 - COVID Impact Adjustment", "Test Stores", "State and Region Growth - "+ str(Store_ID)+ ".jpg")
自动加入带有所有正确反斜杠的目录(我无法测试第二个,因为我在Linux上)希望这有帮助
相关问题 更多 >
编程相关推荐