ord()期望一个字符,但在python代码中找到长度为0的字符串

时间:2017-09-08 12:09:30

标签: python

以下是我正在执行的代码

https://github.com/federico-terzi/gesture-keyboard/blob/master/learn.py

执行我得到的代码后,

文件" learn.py",第57行,

number = ord(category) -ord('a')
  

TypeError:ord()需要一个字符,但找到长度为0的字符串

我该如何解决?

2 个答案:

答案 0 :(得分:1)

查看您链接的代码,category来自

category = name.split("_")[0]

name来自:

for path, subdirs, files in os.walk(root):
    for name in files:

所以我猜你有一个带有前导下划线的文件名。在'_'上拆分此字符串将为列表的第一个值提供一个空字符串。例如:

s = '_abc_test.txt'
s.split('_')
# returns:
['', 'abc', 'test.txt']

这是一个空字符串,它被传递给ord

答案 1 :(得分:0)

项目数据目录包含许多文件,其文件名以_开头,如_sample_t10_34.txt

所以在你的代码中

for path, subdirs, files in os.walk(root):
    for name in files:
        category = name.split("_")[0] # here category = ''

现在下一行是:

number = ord(category) - ord("a")

这里ord()采用长度为1的str类型的参数,当得到名称为{{1的文件时,类别有时会为空字符串''时会出现此错误是beign read。

您可以执行的操作是跳过以_sample_t10_34.txt开头的文件,方法是_检查文件是否以if statement开头。

_