为什么列表导致问题

时间:2019-07-01 14:28:40

标签: python list

所以我正在研究某些代码来修改文本文件。当我单独使用此功能时,它会完美运行

TextRotation.rotTextC("cv.txt")

但是当我批量使用它作为这样的列表

def files_LTXT(pathF):
    return glob.glob(pathF + "*" + ".txt")

for i in range (len(listFileTXT)):
    TextRotation.rotTextC(listFileTXT[i])

IT出现以下错误:

 File "C:\Users\Administrator\PycharmProjects\openCV\TextRotation.py", line 
    9, in rotLineC
    0
    valueObj = int(lineStr[c1])
    0.472917 0.713281 0.845833 0.376563
IndexError: string index out of range

函数rotLineC如下:

def rotLineC(lineStr, c1):
if len(lineStr) > 2:
    valueObj = int(lineStr[c1])
    print(valueObj)
    valueXC = float(lineStr[(c1+2):(c1+10)])
    valueYC = float(lineStr[(c1+11):(c1+19)])
    valueW = float(lineStr[(c1+20):(c1+28)])
    valueH = float(lineStr[(c1+29):(c1+37)])

    # print(valueXC)
    # print(valueYC)
    # print(valueW)
    # print(valueH)

    nValueXC = round(1 - valueYC, 6)
    nValueYC = round(valueXC, 6)
    nValueW = round(valueH, 6)
    nValueH = round(valueW, 6)

    rotString = str(int(valueObj)) + " " + str(nValueXC) + " " + \
                str(nValueYC) + " " + str(nValueW) + " " + str(nValueH)

    print(str(nValueXC) + " " + str(nValueYC) + " " + str(nValueW) + " " + str(nValueH))
    print(rotString)
    return rotString

此功能正常工作!

for i in range (len(listFileJPG)):
      ImageRotation.rotImage(listFileJPG[i])

1 个答案:

答案 0 :(得分:0)

请记住将/包含在路径的末尾! (我在这里假设是UNIX环境)

例如,如果路径为“ dev / my_pat”,则您的函数将失败。路径必须以/结尾。您可以将其用于您的功能:

...
if pathF[-1] != '/':
    return glob.glob(pathF + "/*.txt")
...

此外,请勿使用索引进行迭代,而应使用pythonic方式!

for file in listFileTXT(my_path):
    TextRotation.rotTextC(file)