如何总结多个csv文件中的所有计数是否为零?

问题描述

我每天从一个文件夹中处理几个 csv 文件,但是对于这个问题,我只是使用了 3 个 csv 的样本。我的输出是读取每个 csv 并从每个 csv 中提取单词“未知”的计数(如果存在)并获取相关 csv 的名称我有一个脚本可以做到这一点,但除此之外,我还想反其道而行之。如果在任何 csv 文件中都没有找到“未知”(单词),我想要一个打印语句,说“所有文件都准备好了!”。我正在使用 Python 3.6。这是我所拥有的,以及脚本中不起作用的内容。澄清一下,“未知”是在第 9 列的 csv 文档中手动输入的单词。

示例文件是:

a_csv.csv、b_csv.csv、c_csv.csv

    import glob     
    target_dir = r'C:\\data\\...'
        
    for file in glob.glob('*.csv'):
        with open(file) as f:
            content = f.read()
            
            # Get the count of each "UnkNown" from each file
            count = content.count('UnkNown')
        
            # Print file name with count of "UnkNown" and omitting the .csv from name
            if count != 0:
                print('\n,file[:-4] + ":" + str(count))
        
            # HERE'S what does not work how I want
            elif count == 0:
                print('\nAll files are ready to go!")

这是我的输出,如果当前代码中存在“未知”。

所有文件都准备好了!

b_csv:5

所有文件都准备好了!

脚本打印“所有文件都准备好了!”对于每个通过 count == 0 测试的文件。我得到了这个过程,但是如果文件中根本没有“未知”,我如何调整它以只为所有文件打印一次语句?

如果在任何文件中未检测到“未知”,则为所需的输出,仅打印一次。

所有文件都准备好了!

非常感谢任何解决此问题的帮助/建议。

解决方法

最简单的方法可能是跟踪 Unkown 的总数。 由于您只想打印一次,因此应避免在 for 循环中打印。 正如您已经注意到的那样,这将导致多个输出。

import glob     
target_dir = r'C:\\data\\...'

total_count = 0
for file in glob.glob('*.csv'):
with open(file) as f:
    content = f.read()
    
    # Get the count of each "Unknown" from each file
    count = content.count('Unknown')
    total_count += count       

    # Print file name with count of "Unknown" and omitting the .csv from name
    if count != 0:
        print('\n,' + file[:-4] + ':' + str(count))


if total_count == 0:
    print('\nAll files are ready to go!')

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...