最初创建.py文件时,文本编辑器引入了非打印字符。在
考虑这一行:carregar_uml("H:\\7 - Script\\teste.csv", variaveis)
让我们仔细选择字符串(包括引号),并将其复制粘贴到交互式Python会话中:
^{pr2}$
如您所见,在H之前有一个代码点为U-202A的字符。在
正如其他人指出的,代码点U-202A的字符是LEFT-TO-RIGHT EMBEDDING。回到我们的Python会话:>>> s = "H:\\7 - Script\\teste.csv"
>>> import unicodedata
>>> unicodedata.name(s[0])
'LEFT-TO-RIGHT EMBEDDING'
>>> unicodedata.name(s[1])
'LATIN CAPITAL LETTER H'
>>>
这进一步确认字符串中的第一个字符不是H,而是非打印LEFT-TO-RIGHT EMBEDDING字符。在
我不知道你用什么文本编辑器来创建你的程序。即使我知道,我可能不是那个编辑的专家。不管怎样,你使用的一些文本编辑器插入,你不知道,U+202A
一种解决方案是使用文本编辑器,它不会插入该字符,并且/或将突出显示非打印字符。例如,在vim中,该行显示如下:carregar_uml("<202a>H:\\7 - Script\\teste.csv", variaveis)
使用这样的编辑器,只需删除"和{}之间的字符。在carregar_uml("H:\\7 - Script\\teste.csv", variaveis)
即使这一行在视觉上与你原来的一行完全相同,我还是删除了这个冒犯的字符。使用这一行将避免您报告的OSError。在