我在列表中有特殊字符,它破坏了 SikuliX
I have special characters in list and it breaks SikuliX
我尝试将路径添加到列表中并且一切正常,直到我得到像 ä
或 ö
这样的特殊字符。在字符串中,它们表示为字节,例如 ä
是 \xe4
。如果我在终端中使用相同的 Python 脚本,即使列表中的路径包含这些字节而不是实际字母,我也会正确打印出所有路径。
这是我提取所有文件名的代码:
def read_files(path):
"""
Read all files in folder specified by path
:param path: Path to folder which contents will be read
:return: List of all files in folder specified by path
"""
files = []
for f in listdir(path):
if isfile(join(path, f)):
files.append(make_unicode(join(path, f)))
return files
def make_unicode(string):
if type(string) != unicode:
string = string.decode('utf-8')
return string
我不知道以后要去哪里。我已经尝试了几乎所有我能从 Google 找到的东西。这比 Python 更像是 SikuliX 问题,因为 Python 代码在 SikuliX 之外工作得很好。
我使用 Python 2.7 和 SikuliX 1.1.1。
所以我知道了。问题是,稍后再次调用 read_files(path)
函数,当 path
是带有特殊字符标记为字节的 unicode 时,整个事情就崩溃了。我以仅调用一次此函数的方式更改了我的代码,然后我就可以使用特殊字符了。
我尝试将路径添加到列表中并且一切正常,直到我得到像 ä
或 ö
这样的特殊字符。在字符串中,它们表示为字节,例如 ä
是 \xe4
。如果我在终端中使用相同的 Python 脚本,即使列表中的路径包含这些字节而不是实际字母,我也会正确打印出所有路径。
这是我提取所有文件名的代码:
def read_files(path):
"""
Read all files in folder specified by path
:param path: Path to folder which contents will be read
:return: List of all files in folder specified by path
"""
files = []
for f in listdir(path):
if isfile(join(path, f)):
files.append(make_unicode(join(path, f)))
return files
def make_unicode(string):
if type(string) != unicode:
string = string.decode('utf-8')
return string
我不知道以后要去哪里。我已经尝试了几乎所有我能从 Google 找到的东西。这比 Python 更像是 SikuliX 问题,因为 Python 代码在 SikuliX 之外工作得很好。
我使用 Python 2.7 和 SikuliX 1.1.1。
所以我知道了。问题是,稍后再次调用 read_files(path)
函数,当 path
是带有特殊字符标记为字节的 unicode 时,整个事情就崩溃了。我以仅调用一次此函数的方式更改了我的代码,然后我就可以使用特殊字符了。