Rumah > Artikel > pembangunan bahagian belakang > Bolehkah saya Gunakan \"dengan terbuka\" untuk Membuka Berbilang Fail Secara serentak dalam Python?
Dalam Python, pernyataan dengan terbuka menyediakan cara yang elegan untuk mengendalikan operasi fail dalam konteks berstruktur. Ini menghapuskan keperluan untuk membuka dan menutup fail secara eksplisit, memastikan sumber dikeluarkan dengan betul apabila sekatan tamat.
Namun, bagaimana jika anda perlu mengubah suai atau mengakses berbilang fail serentak? Soalan berikut meneroka senario ini:
Saya mahu mengubah suai berbilang fail serentak tetapi hanya jika saya berjaya menulis kepada semua fail. Bolehkah saya menggabungkan berbilang panggilan terbuka dalam pernyataan dengan?
Dalam Python versi 2.7 dan 3.1 dan seterusnya, jawapannya ialah ya.
with open('a', 'w') as a, open('b', 'w') as b: do_something()
Sintaks ringkas ini membolehkan anda membuka berbilang fail dalam pengurus konteks yang sama, membolehkan anda melakukan operasi pada kesemuanya secara serentak.
Untuk situasi di mana anda perlu membuka bilangan fail yang dinamik, Python 3.3 memperkenalkan penyelesaian yang lebih serba boleh, contextlib.ExitStack.
with ExitStack() as stack: files = [stack.enter_context(open(fname)) for fname in filenames] # Do something with "files"
Pendekatan ini menawarkan fleksibiliti yang lebih besar, membolehkan anda membuka dan mengurus koleksi fail secara dinamik dalam satu blok konteks.
Sebagai alternatif, jika keperluan anda adalah untuk memproses fail secara berurutan, lebih pendekatan yang mudah adalah untuk mengulangi fail dan membukanya dalam setiap lelaran gelung:
for fname in filenames: with open(fname) as f: # Process f
Pendekatan berurutan ini mempunyai faedah kesederhanaan dan mungkin lebih sesuai apabila memproses sejumlah besar fail.
Atas ialah kandungan terperinci Bolehkah saya Gunakan \"dengan terbuka\" untuk Membuka Berbilang Fail Secara serentak dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!