tgoop.com/pythonl/4937
Create:
Last Update:
Last Update:
ΠΡΠ»ΠΈ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΡΡΡΡ *N* ΡΠ°ΠΉΠ»ΠΎΠ², Π·Π°Ρ
Π²Π°ΡΠΈΡΡ *M* Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΎΠΊ ΠΈΠ»ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΠΊΡΡΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ, Π° ΠΈΡ
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ, ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΉ with β¦ as β¦:
Π½Π΅ ΠΏΠΎΠ΄ΠΎΠΉΠ΄ΡΡ. ΠΠΌΠ΅ΡΡΠΎ Β«ΠΏΠΈΡΠ°ΠΌΠΈΠ΄ΡΒ» Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ
with
Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ΡΡ ExitStack:
from contextlib import ExitStack
filenames = ["a.log", "b.log", "c.log"]
with ExitStack() as stack:
files = [stack.enter_context(open(name)) for name in filenames]
# ΡΠ΅ΠΏΠ΅ΡΡ Ρ Π²Π°Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠΊΡΡΡΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ
for f in files:
print(f.readline())
# Π·Π΄Π΅ΡΡ ExitStack Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΡΠΎΠ΅Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΡ Π±ΡΠ»ΠΎ 1000
ΠΠΎΡΠ΅ΠΌΡ ΡΡΠΎ ΠΊΡΡΡΠΎ
- Π£ΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠΎΠ²: Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΠ΅ ΠΈΡ Π² ΡΠΈΠΊΠ», ΡΡΠ»ΠΎΠ²Π½ΠΎ, ΡΠ΅ΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΠΈ-ΡΠ°Π±ΡΠΈΠΊΠΈ.
- ΠΠ°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΡΠΉ rollback ΠΏΡΠΈ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡΡ : Π²ΡΡ, ΡΡΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² ExitStack, Π±ΡΠ΄Π΅Ρ Π·Π°ΠΊΡΡΡΠΎ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅.
- Π£ΠΏΡΠΎΡΠ°Π΅Ρ ΡΠ»ΠΎΠΆΠ½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ: ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ Β«ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΡΡΒ» ΡΠΎ, ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ (ΡΠ°ΠΉΠ»Ρ, Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ, ΡΠ΅ΡΠ΅Π²ΡΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ).
π§ ΠΠ΄Π΅ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ
- ΠΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ Π°ΡΡ ΠΈΠ²ΠΎΠ².
- Π’Π΅ΡΡΠΎΠ²ΡΠ΅ ΡΡΠ΅Π½Π΄Ρ Ρ ΠΊΡΡΠ΅ΠΉ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΡΡΡΠΎΠ².
- ΠΠ»Π°Π³ΠΈΠ½Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ-ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΡ.
Π’Π΅ΠΏΠ΅ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ Β«ΠΊΠ°ΡΠΊΠ°Π΄Π° ΠΈΠ· withΒ» β ΠΎΠ΄ΠΈΠ½ Π°ΠΊΠΊΡΡΠ°ΡΠ½ΡΠΉ ExitStack.
@pythonl