0

我在 Python 3.3.2 中遇到了这两个错误:

import os
path="D:\\Data\\MDF Testing\\MDF 4 -Bangalore\\Bangalore Testing"
os.chdir(path)

for file in os.listdir("."):
    if file.endswith(".doc"):
        print('FileName is ', file)


def testcasenames(file):
    nlines = 0
    lookup="Test procedures"
    procnames=[]
    temp=[]
    '''Open a doc file and try to get the names of the various test procedures:'''
    f = open(file, 'r')
    for line in f:
        val=int(nlines)+1
        if (lookup in line):
            val1=int(nlines)
        elif(line(int(val))!=" ") and line(int(val1))==lookup):
            temp=line.split('.')
            procnames.append(temp[1])
        else:
            continue
    return procnames

filename="MDF_Bng_Test.doc"
testcasenames(filename)

Traceback (most recent call last):
  File "D:/Data/Python files/MS_Word_Python.py", line 34, in <module>
    testcasenames(filename)
  File "D:/Data/Python files/MS_Word_Python.py", line 25, in testcasenames
    elif(line(val)!=" " and line(val1)==lookup):
TypeError: 'str' object is not callable

这个想法是只有在我在测试文档文件(MDF_Bng_Test.doc)中循环时获得“测试程序”部分之后才获得测试程序名称,然后我复制所有测试程序名称(T_Proc_2.1,S_Proc_2.2。 ..) 在它之下。

前任:

    1.1.1 Test objectives
       1.Obj 1.1
       2.Obj 1.2
       3.Obj 1.3
       4.Obj 1.4
  **2.1.1 Test procedures
       1.T_Proc_2.1
       2.S_Proc_2.2
       3.M_Proc_2.3
       4.N_Proc_2.4**
    3.1.1 Test References
       1.Refer_3.1
       2.Refer_3.2
       3.Refer_3.3
4

2 回答 2

1

当您使用()with时line,它认为这line是一个实际上不是的功能。您实际需要使用的是[]符号

line[int(val)]!=" " and line[int(val1)]==lookup
于 2013-11-06T12:57:50.007 回答
1

问题出在这一行:

elif(line(int(val))!=" ") and line(int(val1))==lookup):

如果您尝试索引字符串,Python 使用方括号表示法 ( []) 来完成它,它会是这样的:

elif(line[int(val)]!=" ") and line[int(val1)]==lookup):

另一个建议是,Python 中的括号包装if..else语句是可选的,通常没有它们代码看起来会更好:

elif line[int(val)]!=" " and line[int(val1)]==lookup:

希望这可以帮助!

于 2013-11-06T12:59:58.793 回答