检查文件是否包含标题以外的内容

时间:2017-11-02 13:57:28

标签: python pandas

这可能是一个愚蠢的问题,但我如何检查文件是否包含除标题之外的任何内容,而不将整个文件加载到内存中。

我的要求是这样的,我有一个文件列表。在不加载整个文件的情况下,我想检查它是否包含除标题之外的任何内容。如果是,则打开文件并执行追加操作。否则继续下一个文件。 这是我的代码:

import pandas as pd
import json

InFiles = ["Input1.txt","Input2.txt"]
OpFile = "Output.txt"
Header = False;

for i in range(0, len(InFiles)):
    with open(InFiles[i]) as f:
        line1, line2 = next(f), next(f)
    if line2 is not None and len(line2) > 0:
        df = pd.read_csv(InFiles[i], dtype=str)
        if not Header:
            df.to_csv(OpFile, mode='a', index=False, header=True)
            Header = True
        else:
            df.to_csv(OpFile, mode='a', index=False, header=False)

这里,当我尝试读取标题之后的行,即line2 = next(f)时,它会抛出异常。我想要做的是如果不存在标题之后的行,则应继续执行下一个文件。

我该怎么做?

编辑::尝试COLDSPEEEDS解决方案:

for i in range(0, len(InFiles)):
    df = pd.read_csv(opFilename, dtype=str, nrows=1)
        if df is not None and len(df) > 0:
        df = pd.read_csv(InFiles[i], dtype=str)
        if not Header:
            df.to_csv(OpFile, mode='a', index=False, header=True)
            Header = True
        else:
            df.to_csv(OpFile, mode='a', index=False, header=False)

1 个答案:

答案 0 :(得分:0)

您可以指定nrows=1只读取第一行,然后进行长度检查:

df = pd.read_csv(InFiles[i], dtype=str, nrows=1)
if not len(df):
    ...