我必须在同一个循环中打开和写入大约10个不同的文件。 e、 克:
for i in range(0,10):
try:
a=5
file1 = open("file1.txt",'w+')
file2 = open("file2.txt",'w+')
#... etc
print(str(a),file=file1)
print(str(a)+"hi",file=file2)
# ... etc
except:
#error handling
现在,我想做的是能够获得特定的异常信息,比如在一般异常中打开/写入的文件。根据我目前的理解,我必须做这样的事情来实现我想要的:
for i in range(0,5):
a=5
try:
file1 = open("file1.txt",'w+')
print(str(a),file=file1)
except:
#error handling for file1
try:
file2 = open("file2.txt",'w+')
print(str(a)+"hi",file=file2)
except:
#error handling for file2
…当我要为大约10个不同的文件执行此操作时,它将变得非常笨拙和没有吸引力。有没有办法(例如)从一个常规异常中获取文件名信息,就像我的第一个例子中那样?基本上,这样异常就可以报告“写入file1时出错”之类的事情,而不需要尝试/特别是针对file1操作。
编辑:这是对正在写入文件的数据的极大简化。str(a)和str(a)+“hi”并不能很好地表示实际写入的数据;file1可能需要一个硬编码整数,其中file2可能需要一个用多个变量格式化的字符串。将打开/写入过程概括为循环并不能很好地工作。
你提到使用循环,但实际上你没有使用循环。使用循环。这样,您可以在单个
try
块中一次写入一个文件。除了给每个文件写一个值之外,您似乎没有对这些文件执行任何操作,因此不需要将它们全部打开。编辑:如果你有很多不同的东西要写到不同的文件中,提前创建一个字典或其他数据结构来存储文件和数据之间的映射,然后在循环中使用它。
您可以使用^{} 获取有关当前正在处理的异常的信息,包括异常对象本身。
IOError
异常包含所需的所有信息,包括文件名、错误号和描述错误的字符串:在第一个异常之后,
try
块中的执行显然仍将停止。使用traceback模块:
相关问题 更多 >
编程相关推荐