Rumah >pembangunan bahagian belakang >Tutorial Python >Apakah kegunaan pernyataan WITH dalam Python?
Dalam artikel ini, kita akan mempelajari tentang pernyataan "dengan" dalam Python dan penggunaannya.
Dalam Python, pernyataan with menggantikan blok cuba-tangkap dengan cara yang ringkas.
Lebih penting, ia memastikan sumber ditutup serta-merta selepas diproses.
Menggunakan pernyataan dengan untuk membaca atau menulis fail adalah penggunaan biasa.
Pengurus konteks ialah fungsi atau kelas yang menyokong pernyataan dengan. Pengurus konteks membolehkan anda membuka dan menutup sumber apabila anda mahu.
Sebagai contoh, fungsi open() ialah pengurus konteks. Apabila anda memanggil fungsi open() menggunakan pernyataan dengan, fail ditutup secara automatik selepas memproses fail.
Berikut ialah algoritma/langkah untuk melaksanakan tugasan yang diperlukan:
Gunakan fungsi open() (yang membuka fail dan mengembalikan objek fail sebagai hasilnya) untuk membuka fail teks dalam mod baca sahaja dengan menghantar nama fail dan mod sebagai parameter kepadanya ("r " di sini bermaksud mod baca sahaja) .
with open(inputFile, 'r') as fileData:
Gunakan fungsi readlines() untuk mendapatkan senarai baris fail teks yang diberikan.
file.readlines(hint)
Gunakan gelung for untuk melelaran melalui setiap baris fail teks yang diberikan.
Cetak baris fail teks yang sepadan.
# input file path inputFile = "ExampleTextFile.txt" print("The lines of a given Text File are:") # Opening the given file in read-only mode. with open(inputFile, 'r') as fileData: # Read the above file lines using readlines() fileLines = fileData.readlines() # Traverse in the each line of the text file for textLine in fileLines: # printing each line print(textLine)
The lines of a given Text File are: Good Morning this is Tutorials Point sample File Consisting of Specific Good source codes in Python,Seaborn,Scala Summary and Explanation
Gunakan kata kunci `dengan` bukan sahaja untuk membuka fail dalam mod baca, tetapi juga untuk menetapkan alias pada fail yang dibuka.
Dalam Python, anda boleh menggunakan pengendalian ralat cuba-tangkap untuk membuka dan menulis fail.
Di bawah tudung, pernyataan dengan menggantikan blok cuba tangkap
berikut Terjemahan bahasa Cina bagi# opening the file in write mode using the open() function inputFile = open("tutorialsFile.txt", "w") # handling the exceptions using try-catch blocks try: # writing text into the file inputFile.write("Hello tutorialsPoint python") finally: # closing the file inputFile.close()
Hello tutorialsPoint python
Apl ini membuka fail tutorialsFile.txt. Jika tiada fail sedemikian wujud, program menciptanya. Kod itu kemudian menulis "Hello tutorialsPoint python" pada fail dan kemudian menutup fail.
Tiada masalah dengan kaedah ini. Walau bagaimanapun, tugas ini boleh dicapai dengan lebih elegan menggunakan pernyataan dengan.
Sekarang mari kita cipta semula contoh sebelumnya menggunakan pernyataan dengan −
# opening a file in write mode with an alias name using with statement with open("tutorialsFile.txt", "w") as file: # writing text into the file file.write("Hello tutorialsPoint python")
Ini memudahkan kod kerana pernyataan dengan boleh mengendalikan penutupan fail selepas ia digunakan. Itulah sebabnya secara amnya menggunakan pernyataan dengan adalah teknik pilihan untuk membuka fail dalam Python.
Apabila memproses fail, anda mungkin berfikir bahawa pernyataan with hanya digunakan pada fungsi open(). Walau bagaimanapun, ini tidak berlaku. Kelas dan objek yang menyokong pernyataan dengan juga boleh dibuat.
Pengurus konteks ialah kelas atau fungsi yang menyokong pernyataan dengan
Jika anda ingin menambahkan pengurusan sumber pada projek anda, anda boleh menggunakan pengurus konteks. Untuk dianggap sebagai pengurus konteks, kelas mesti melaksanakan dua kaedah berikut −
Selepas melaksanakan kaedah ini, anda boleh menggunakan pernyataan dengan pada objek kelas.
Apabila pernyataan with dipanggil, kaedah __enter__() akan dipanggil.
Apabila anda keluar dari skop blok dengan, kaedah __exit__() akan dipanggil.
Buat pengurus konteks untuk penulisan fail
Fungsi kelas ini adalah sama dengan kaedah open()
class FileWriter(object): def __init__(self, fileName): self.fileName = fileName def __enter__(self): self.file = open(self.fileName, "w") return self.file def __exit__(self, exception_type, exception_value, traceback): self.file.close()
Menggunakan FileWriter(nama fail), objek FileWriter baharu dicipta dan __enter__() dipanggil.
__enter__() digunakan untuk memulakan sumber yang diperlukan. Dalam kes ini ia membuka fail teks. Ia juga mesti mengembalikan deskriptor sumber dan oleh itu fail terbuka.
sebagai fail menyerahkan fail kepada pembolehubah bernama fail.
Akhir sekali, dalam blok dengan selepas titik bertindih, letakkan kod yang akan dilaksanakan dengan sumber yang diambil.
Apabila pelaksanaan kod ini selesai, kaedah __exit__() akan dipanggil secara automatik. Dalam kes ini ia menutup fail.
Pengurus konteks yang ditulis sebelum ini ialah kelas, tetapi bagaimana jika anda ingin mencipta kaedah pengurus konteks yang serupa dengan fungsi open()? Python juga membolehkan anda menulis kaedah pengurus konteks.
Tukar kaedah kepada pengurus konteks menggunakan modul contextlib.
Terjemahan bahasa Cina bagi# importig the contextmanager from contextlib module from contextlib import contextmanager # Marking the file_open() function as a context manager # using contextmanager decorator @contextmanager def file_open(name): try: file = open(name, "w") yield file finally: file.close() with file_open("exampleFile.txt") as file: file.write("Hello tutorialsPoint python")Terjemahan
Hello tutorialsPoint python
Di sini, kami mencipta fungsi baharu menggunakan kata kunci dengan dan menamakannya. Apabila kita memanggil fungsi ini, ia cuba membuka fail yang ditentukan dalam mod tulis dan mengembalikan hasilnya. Jika ralat berlaku, fail akan ditutup.
Kami belajar cara menggunakan pernyataan dengan contoh dalam artikel ini.
Atas ialah kandungan terperinci Apakah kegunaan pernyataan WITH dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!