我有很多文件,使用西里尔字母命名。为了解决这个问题,我做了一个音译功能,看起来像这样:
def transliterate(input):
mapping = { \
'А' : 'A', \
'Б' : 'B', \
'В' : 'V', \
.....
}
for c in input:
if c in mapping:
input = input.replace(c, mapping[c])
return input
从视觉上看,此功能效果很好。我将生成的文件名写入Postgre数据库,这就是我在那里看到的:
如你所见,我不再有任何西里尔字母。然而,当我在我的Python代码中使用这些文件名创建子进程命令时,我得到了非常奇怪的错误:
你看,即使在屏幕上它看起来像一个普通的文件名79-A.tif
,但是使用这个文件的工具会以某种奇怪的方式解释这个名字(我用红色标记它)。但是,如果我只是手动输入名称,那么它可以工作。那么,这有什么问题,我该如何解决?谢谢!