Tôi phải mở & ghi vào khoảng 10 tệp khác nhau trong cùng một vòng lặp. ví dụ:Lấy các chi tiết ngoại lệ trong Python
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
Bây giờ những gì tôi muốn làm là có thể nhận được thông tin ngoại lệ cụ thể như tập tin những gì đã được mở/ghi vào trong ngoại lệ chung. Từ sự hiểu biết hiện tại của tôi, tôi sẽ phải làm một việc như thế này để đạt được những gì tôi muốn:
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
... Mà sẽ trở nên vô cùng khó khăn và không hấp dẫn khi tôi phải làm điều này cho khoảng 10 tệp khác nhau . Có cách nào để có được (ví dụ) các thông tin tên tập tin ra khỏi một ngoại lệ chung như trong ví dụ đầu tiên của tôi? Về cơ bản, trường hợp ngoại lệ có thể báo cáo những thứ như "lỗi khi ghi vào tệp 1" mà không cần thử/ngoại trừ cụ thể cho các hoạt động của tệp1.
chỉnh sửa: Đây là sự đơn giản hóa quá lớn dữ liệu được ghi vào tệp. str (a) và str (a) + "hi" không đại diện cho dữ liệu thực sự được viết; file1 có thể cần một số nguyên cứng, trong đó file2 có thể cần một chuỗi được định dạng với nhiều biến. để khái quát hóa quá trình mở/viết thành một vòng lặp sẽ không hoạt động rất tốt.
tôi có nghĩa là cho mã bao gồm để được xem xét như thể nó đã ở trong một vòng lặp. bị bệnh đó. Nhưng bất kể điều này không thực sự giải quyết được vấn đề của tôi. Những thứ được ghi vào các tệp này không nhất thiết phải giống nhau về bất kỳ cách nào, hình dạng hoặc hình thức nào. File1 có thể cần một "1" được mã hoá cứng để in, tệp 2 có thể cần một biến được in cho nó và tệp3 có thể cần nhiều biến. những gì sẽ xảy ra cuối cùng là một tuyên bố lớn trong "với"; ví dụ. "nếu filename = file1, viết cái này, nếu filename = file2, hãy viết cái đó; nếu filename = file3, viết cái khác này". Mã sẽ giống như clunky – user891876
@ user891876: Xem câu trả lời đã chỉnh sửa của tôi. Sắp xếp lại mối quan hệ giữa các tệp và dữ liệu, sau đó ghi từng phần dữ liệu vào tệp được liên kết của nó trong vòng lặp. – BrenBarn
nếu tôi không muốn in thành tệp 3 nếu chiều dài (str (a) + str (b))> 5? mỗi tệp cần chắc chắn logic riêng của nó. – user891876