为什么列表会引起问题

2024-09-25 18:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我正在编写一个特定的代码来修改一个文本文件。当我单独使用这个函数时,它工作得非常好

TextRotation.rotTextC("cv.txt")

但是当我批量使用它作为一个列表时

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

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

它给出以下错误:

 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])

Tags: inlenrangefloatintprintc1str
1条回答
网友
1楼 · 发布于 2024-09-25 18:24:46

注意把/放在路径的末尾!(我假设这里是UNIX环境)

例如,如果路径为“dev/my\u pat”,则函数将失败。路径必须以/结束。您可以将其应用于您的功能:

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

另外,不要使用索引进行迭代,使用pythonic方法!你知道吗

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

相关问题 更多 >