Python 从输出中删除空列表

Python 从输出中删除空列表,python,windows,Python,Windows,以下代码遍历以“F3E3”开头的所有子目录,然后检索文件名中包含“0.1Hz”的所有csv文件。然后,我按照上次创建的csv文件对这些csv文件进行排序 directory = r"\DATA" subdirs = [os.path.join(directory, fl) for fl in os.listdir(directory) if fl.startswith("F3E3")] for subdir in subdirs: filenames =

以下代码遍历以“F3E3”开头的所有子目录,然后检索文件名中包含“0.1Hz”的所有csv文件。然后,我按照上次创建的csv文件对这些csv文件进行排序

    directory = r"\DATA"
    subdirs = [os.path.join(directory, fl) for fl in os.listdir(directory) if fl.startswith("F3E3")]
    for subdir in subdirs:
        filenames = [os.path.join(subdir, fl) for fl in os.listdir(subdir) if fl.endswith(".csv") and ("0.1Hz" in fl)]
        result = [x for x in filenames if x != []]
        final_list = sorted(result, key=os.path.getctime, reverse=True)
        print (final_list)
问题是一些以“F3E3”开头的子目录不包含任何文件名中包含“0.1Hz”的csv文件。因此,代码输出:

[]
[]
[]
[]
[]
['\DATA\\F3E31\\F3E31TEST_0.1Hz_2017-01-28.csv','\DATA\\F3E31\\F3E31TEST_0.1Hz_2017-01-27.csv']
['\DATA\\F3E317\\F3E317_TEST_0.1Hz_2017-02-18.csv', '\DATA\\F3E317\\F3E317_TEST_0.1Hz_2017-02-17.csv']
[]
[]
[]
[]

如何在输出中消除这些空列表?我不确定为什么result=[x代表文件名中的x,如果x!=[]]没有解决这个问题。

原因是
文件名中的元素不是列表,而是字符串。因此,
x!=[]
将始终通过。因此,准备
结果的循环实际上没有任何作用。你必须使用if语句,比如

if len(filenames) > 0:
    final_list = sorted(result, key=os.path.getctime, reverse=True)

代替
结果


您应该在
filenames
变量上添加一个print语句,以检查它是否确实包含列表或字符串。

如果您不使用oneliners,对我们和您来说都会更容易。非常好用。非常感谢。很高兴能帮忙!希望您不介意投票并将其标记为可接受的解决方案:)
if len(filenames) == 0: continue