计数器for循环,报告1

时间:2019-04-01 14:41:03

标签: python for-loop if-statement counter

我只是想在我的for循环周围添加一个计数器,以根据包含'VCCS'的限定数来计算目录中有多少文件...该逻辑适用于迭代,因为它遍历我的目录需要访问文件的次数...但是我的计数器一直在报告1.相关行是files_in_directory市场,注释为# here

我在PyLint中收到此警告:在files_in_directory" doesn't conform to UPPER_CASE naming stylepylint(invalid-name)上的常量名称“ files_in_directory = 0

我试过将set 0移到for上方,然后尝试任何想法吗?

if __name__ == "__main__":
    try:
        currentDT = datetime.datetime.now()
        files_in_directory = 0 # here
        for filename in os.listdir(config.DIRECTORY_LOCATION):
            if filename.__contains__('VCCS'):
                old_stdout = sys.stdout
                log_file = open("./logs/metrics.log","w")
                sys.stdout = log_file
                files_in_directory += 1 # here

                PENDING_RECORDS = FindPendingRecords().get_excel_data()
                # Do operations on PENDING_RECORDS

                # Reads excel to map data from excel to vital
                MAP_DATA = FindPendingRecords().get_mapping_data()

                # Configures Driver
                VITAL_ENTRY = VitalEntry()

                # Start chrome and navigate to vital website
                VITAL_ENTRY.instantiate_chrome()

                # Begin processing Records
                VITAL_ENTRY.process_records(PENDING_RECORDS, MAP_DATA)

                print(f"Date: ")
                print (str(currentDT))                
                print(f"Files in Directory #{files_in_directory}") # here

                sys.stdout = old_stdout
                log_file.close()  

    except Exception as exc:
        # print(exc)
        raise

2 个答案:

答案 0 :(得分:2)

注意:为了便于阅读,这是为了代替许多注释

您所提出的问题不是MCVE。为了使其更简洁并确定确切原因:

import os

if __name__ == "__main__":
    # Remove try block, just let it raise an error
    my_counter = 0

    for file in os.listdir("some_directory"):
        # you don't need to call the __contains__ method
        # as the 'in' keyword will invoke that for you
        if "VCCS" in file:

            # increment your counter first
            my_counter += 1
            print(file, my_counter)

现在毫无疑问,my_counter正在被修改,这将在柜台旁打印出您正在查看的文件。

一旦您消除了这种行为,就可以开始添加其他功能

import os

if __name__ == "__main__":
    # Remove try block, just let it raise an error
    my_counter = 0

    for file in os.listdir("some_directory"):
         if 'VCCS' in file:
             my_counter += 1
             print(my_counter, file)

             # Add functions back in one by one
             PENDING_RECORDS = FindPendingRecords().get_excel_data()

继续此过程,直到您确定引起问题的原因是 。就目前而言,我看不到任何可能覆盖该计数器变量的明确信息,因此我怀疑A)您发布的代码 not 不能反映正在运行的内容,或者B)您正在修改/ reset files_in_directory在模块中的其他位置。

建议修改:

我建议您从模块中添加其他代码以查看发生了什么。这样,我们就可以更清楚地了解代码运行时发生的情况

答案 1 :(得分:-2)

那么第一件事:您确定要传递正确的目录,并且该目录中确实包含一个以上文件,这些文件的名称中包含VCCS吗?

我还将尝试在没有Try / Except块的情况下运行此代码,以查看在第一次递增之后是否没有出现任何错误。

LMK您能得到什么,希望对您有所帮助。