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