如何遍历多个文件,忽略空文件而不引发异常?

How to loop over multiple files, ignore empty files without raising an exception?

我正在编写一个可以同时接受多个文件的程序。但是我正在尝试以一种方式更改此程序,如果输入空文件,则忽略该文件但继续读取所有其他文件,并在不引发与空文件相关的任何异常错误的情况下为我提供输出。

例如:

文件 1 = 包含适用于此程序的文本

文件 2 = 为空

这是我的一段程序:

from sys import argv
script , filenames = argv[0], argv[1:]

for file in filenames: 
    with open(file) as f: 

        var  = f.read()          

        print "\n\nYou File Name: '(%r)'" % (file)

        var1 = var.split() 
        var2 = len(var1) 

        print '\n\nThe Total Number of Words: "({0:,})"'.format(var2) 

        var3 = var.split()[0]
        var4 = len(var3) 

        print '\n\nThe First Word and Length: "(%s)" ({0:,})'.format(var4)  % (var3)

如果我 运行 这个程序使用文件 2,我会得到以下错误:

    var3 = var.split()[0]
IndexError: list index out of range

有没有一种方法可以让我 运行 文件 1 和文件 2 一起,但得到文件 1 的输出,然后为文件 2 打印一条消息,说它是一个无法识别的文件?我尝试添加 try/except 但仍然无法正常工作。

使用if / else检查文件的长度:

for file in filenames: 
    with open(file) as f: 

        var = f.read()          

        print "\n\nYou File Name: '(%r)'" % (file)

        if len(var) > 0:
            var1 = var.split() 
            var2 = len(var1) 

            print '\n\nThe Total Number of Words: "({0:,})"'.format(var2) 

            var3 = var.split()[0]
            var4 = len(var3) 

            print '\n\nThe First Word and Length: "(%s)" ({0:,})'.format(var4)  % (var3)
         else:
            print 'File empty'