代码无法正常工作

时间:2017-02-11 21:13:10

标签: python function io

为什么下面的代码按预期工作,但一旦放入函数中。它会返回意外的结果吗?

SELECT * FROM tblTransactions
WHERE TransactionID Not In (Select DebitID From tblMatches)
    And TransactionID Not In (Select CreditID From tblMatches)

预计会打印出结果。

a_prm = []

folder = askdirectory()
copy = False

os.chdir(folder)
for file in glob.glob("*.prm"):
    with open(file, 'r') as prm:
        if file[:3] == 'DBA':
            for line in prm:
                if '@ATTRIB_DETAIL' in line:
                    copy = True
                elif '@BITLIST_FILES' in line:
                    copy = False
                elif copy:
                    print(line.split()[1])

什么都不返回。

2 个答案:

答案 0 :(得分:0)

您在第二个版本(函数内)中将flag(又名copy)值重置为False,而不是在“无常规”版本中只在开始时设置它。

如果满足if '@ATTRIB_DETAIL' in lineelif '@BITLIST_FILES' in line:,行为就会有所不同。在第二个版本中没有重现的记忆效应。

答案 1 :(得分:0)

根据您的共享代码,错误可能是由于在使用后定义了该功能引起的 该函数应在使用前定义。

修改后的代码。

def dimensions_parse(line):
    flag = False

    if '@ATTRIB_DETAIL' in line:
        flag = True
    elif '@BITLIST_FILES' in line:
        flag = False
    elif flag:
        print(line.split()[1])

if file[:3] == 'DBA':
            with open(file, 'r') as prm:
                for line in prm:
                    dimension_parse(line)