我正在编写一个可以同时接受多个文件的程序。但我尝试更改此程序,如果输入一个空文件,然后忽略该文件,但继续读取所有其他文件,并提供输出,而不会引发任何与空相关的异常错误文件。
例如:
文件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但仍然无法正常工作。
答案 0 :(得分:1)
使用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'