Vì Python 3.3, bạn có thể sử dụng lớp ExitStack
từ mô -đun contextlib
để an toàn một số lượng tệp tùy ý.
open an arbitrary number of files.
Nó có thể quản lý một số lượng động của các đối tượng nhận biết bối cảnh, điều đó có nghĩa là nó sẽ chứng minh đặc biệt hữu ích nếu bạn không biết bạn sẽ xử lý bao nhiêu tệp.
Trên thực tế, trường hợp sử dụng chính tắc được đề cập trong tài liệu là quản lý một số lượng tệp động.
with ExitStack[] as stack:
files = [stack.enter_context[open[fname]] for fname in filenames]
# All opened files will automatically be closed at the end of
# the with statement, even if attempts to open files later
# in the list raise an exception
Nếu bạn quan tâm đến các chi tiết, đây là một ví dụ chung để giải thích cách ExitStack
hoạt động:
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
Output:
0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
- Xây dựng vấn đề và tổng quan về giải pháp
- Chuẩn bị & Tổng quan
- Phương pháp 1: Mở nhiều tệp văn bản với Open []
- Phương pháp 2: Mở tệp trên nhiều dòng với Open [] và Backslash [\]
- Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []
- Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []
- Bản tóm tắt
- Lập trình viên hài hước
Xây dựng vấn đề và tổng quan về giải pháp
Chuẩn bị & Tổng quan
Phương pháp 1: Mở nhiều tệp văn bản với Open []Question: How would we write Python code to open multiple files?
Phương pháp 2: Mở tệp trên nhiều dòng với Open [] và Backslash [\]
- Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []: Open Multiple Text Files using
1from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
- Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []:Open Multiple Text Files using
1 and backslash [from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
3]from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
- Bản tóm tắt: Open Multiple Text Files using Parenthesized Context Managers and
1from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
- Lập trình viên hài hước: Open Multiple Text Files using the
os library and
1from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
Trong bài viết này, bạn sẽ học cách mở nhiều tệp trong Python.
💬 Câu hỏi: Làm thế nào chúng ta sẽ viết mã Python để mở nhiều tệp?
Chuẩn bị & Tổng quan
Phương pháp 1: Mở nhiều tệp văn bản với Open []
- Phương pháp 2: Mở tệp trên nhiều dòng với Open [] và Backslash [\]
- Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []
- Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []
Bản tóm tắt
Lập trình viên hài hước
Trong bài viết này, bạn sẽ học cách mở nhiều tệp trong Python.
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
9💬 Câu hỏi: Làm thế nào chúng ta sẽ viết mã Python để mở nhiều tệp?
import logging
Chúng tôi có thể hoàn thành nhiệm vụ này bằng một trong các tùy chọn sau:
Phương pháp 1: Mở nhiều tệp văn bản với Open []
Phương pháp 2: Mở tệp trên nhiều dòng với Open [] và Backslash [\]one line using the
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
1 statement separated by the comma [0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
1] character. try: with open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []
- Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []one line of code.
- Bản tóm tắt
- Lập trình viên hài hước
- Trong bài viết này, bạn sẽ học cách mở nhiều tệp trong Python.
💬 Câu hỏi: Làm thế nào chúng ta sẽ viết mã Python để mở nhiều tệp?
Chúng tôi có thể hoàn thành nhiệm vụ này bằng một trong các tùy chọn sau:Note: The
import logging0 function removes any trailing space characters. The newline character [
import logging1] is added to place each iteration on its own line.
Phương pháp 1: Mở nhiều tệp văn bản bằng cách sử dụng
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
1Phương pháp 2: Mở nhiều tệp văn bản bằng cách sử dụng
1 và Backslash [from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
3]from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
9Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
1
Phương pháp 2: Mở tệp trên nhiều dòng với Open [] và Backslash [\]
Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []
try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []
- Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []
- Bản tóm tắt
- Trong bài viết này, bạn sẽ học cách mở nhiều tệp trong Python.
💬 Câu hỏi: Làm thế nào chúng ta sẽ viết mã Python để mở nhiều tệp?
💡 & nbsp; Lưu ý: Hàm
import logging0 loại bỏ bất kỳ ký tự không gian kéo dài nào. Nhân vật Newline [
import logging1] được thêm vào để đặt từng lần lặp trên dòng riêng của nó.Note: The
import logging0 function removes any trailing space characters. The newline character [
import logging1] is added to place each iteration on its own line.
Nếu thành công, nội dung của
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
7 và 0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
8 là giống hệt nhau.Phương pháp 3: Mở nhiều tệp văn bản bằng cách sử dụng Trình quản lý bối cảnh dấu ngoặc đơn và Open []
Trong Python phiên bản 3.10, các nhà quản lý bối cảnh được thêm vào. Điều này khắc phục một lỗi được tìm thấy trong phiên bản 3.9, không hỗ trợ việc sử dụng dấu ngoặc đơn trên nhiều dòng mã. Làm thế nào Pythonic!
Ở đây, cách họ nhìn trong một ví dụ ngắn:
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
Đoạn mã này được bọc trong một câu lệnh
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
6 để bắt lỗi. Khi điều này chạy, nó nằm trong câu lệnh 0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
3 và thực thi như sau:- Tuyên bố mở
try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
0 và khung mở [try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
1]].- Mở
7 [from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
3] để đọc với dấu phẩy [,] để cho Python biết mong đợi một tập tin khác. - Mở
8 [0 enter X1 enter X2 enter X3 3 exit X3 exit X2 exit X1 0 [1, 2, 3]
6] để viết.0 enter X1 enter X2 enter X3 3 exit X3 exit X2 exit X1 0 [1, 2, 3]
- Mở
- Đóng câu lệnh
try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
0 bằng cách sử dụngtry: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
7. - Sau đó, toàn bộ nội dung của
7 viết lênfrom contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
8.0 enter X1 enter X2 enter X3 3 exit X3 exit X2 exit X1 0 [1, 2, 3]
Nếu xảy ra lỗi trong quá trình trên, mã rơi vào câu lệnh
0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
9, truy xuất và xuất thông báo lỗi cho thiết bị đầu cuối.Nếu thành công, nội dung của
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
7 và 0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
8 là giống hệt nhau.Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []
Phương pháp này gọi trong thư viện
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]3 [
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]4] cung cấp chức năng để hoạt động với hệ điều hành. Cụ thể, cho ví dụ này, thao tác tệp và thư mục.
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]
💡 & nbsp; Lưu ý: Trong ví dụ này, hai [2] tệp được đọc và xuất vào thiết bị đầu cuối.Note: In this example, two [2] files are read in and output to the terminal.
Mã mã này nhập thư viện
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]3 để truy cập các chức năng cần thiết.
Đối với ví dụ này, chúng tôi có hai [2] tệp văn bản nằm trong thư mục
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]6 của chúng tôi: ________ 67 và
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]8 Để truy cập và làm việc với các tệp này, chúng tôi gọi
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]9 để thay đổi sang thư mục này [thư mục].
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]7 and
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]8 To access and work with these files, we call
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]9 to change to this folder [directory].
Tiếp theo, chúng tôi lấy một danh sách tất cả các tệp nằm trong thư mục làm việc hiện tại [
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]0] và lưu kết quả vào
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]1.
[
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]0] and save the results to
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]1.
Nếu chúng ta xuất nội dung của
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]1 vào thiết bị đầu cuối, chúng ta sẽ có các mục sau: danh sách tất cả các tệp trong thư mục làm việc hiện tại ở định dạng danh sách.
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]3
Đoạn mã này được bọc trong một câu lệnh
from contextlib import ExitStack
class X:
num = 1
def __init__[self]:
self.num = X.num
X.num += 1
def __repr__[self]:
cls = type[self]
return '{cls.__name__}{self.num}'.format[cls=cls, self=self]
def __enter__[self]:
print['enter {!r}'.format[self]]
return self.num
def __exit__[self, exc_type, exc_value, traceback]:
print['exit {!r}'.format[self]]
return True
xs = [X[] for _ in range[3]]
with ExitStack[] as stack:
print[len[stack._exit_callbacks]] # number of callbacks called on exit
nums = [stack.enter_context[x] for x in xs]
print[len[stack._exit_callbacks]]
print[len[stack._exit_callbacks]]
print[nums]
6 để bắt lỗi. Khi điều này chạy, nó nằm trong câu lệnh 0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
3 và thực thi như sau:- Tuyên bố mở
try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
0 và khung mở [try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
1]].- Mở
7 [from contextlib import ExitStack class X: num = 1 def __init__[self]: self.num = X.num X.num += 1 def __repr__[self]: cls = type[self] return '{cls.__name__}{self.num}'.format[cls=cls, self=self] def __enter__[self]: print['enter {!r}'.format[self]] return self.num def __exit__[self, exc_type, exc_value, traceback]: print['exit {!r}'.format[self]] return True xs = [X[] for _ in range[3]] with ExitStack[] as stack: print[len[stack._exit_callbacks]] # number of callbacks called on exit nums = [stack.enter_context[x] for x in xs] print[len[stack._exit_callbacks]] print[len[stack._exit_callbacks]] print[nums]
try: with open['orig_file.txt', 'r'] as fp1, \ open['new_file3.txt', 'w'] as fp2: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]
3] để đọc với dấu phẩy [,] để cho Python biết mong đợi một tập tin khác. - Mở
8 [0 enter X1 enter X2 enter X3 3 exit X3 exit X2 exit X1 0 [1, 2, 3]
6] để viết.0 enter X1 enter X2 enter X3 3 exit X3 exit X2 exit X1 0 [1, 2, 3]
- Mở
Nếu xảy ra lỗi trong quá trình trên, mã rơi vào câu lệnh
0
enter X1
enter X2
enter X3
3
exit X3
exit X2
exit X1
0
[1, 2, 3]
9, truy xuất và xuất thông báo lỗi cho thiết bị đầu cuối.Phương pháp 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []
Phương pháp này gọi trong thư viện
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]3 [
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]4] cung cấp chức năng để hoạt động với hệ điều hành. Cụ thể, cho ví dụ này, thao tác tệp và thư mục.
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]8
import os
os.chdir['files']
filelist = os.listdir[os.getcwd[]]
for i in filelist:
try:
with open[i, 'r'] as fp:
for line in fp.readlines[]:
print[line]
except OSError as error:
print['error %s', error]
💡 & nbsp; Lưu ý: Trong ví dụ này, hai [2] tệp được đọc và xuất vào thiết bị đầu cuối.
Mã mã này nhập thư viện
try: with [ open['orig_file.txt', 'r'] as fp1, open['new_file.txt', 'w'] as fp2 ]: fp2.write[fp1.read[]] except OSError as error: logging.error["This Error Occurred: %s", error]3 để truy cập các chức năng cần thiết.
Đối với ví dụ này, chúng tôi có hai [2] tệp văn bản nằm trong thư mục try:
with [
open['orig_file.txt', 'r'] as fp1,
open['new_file.txt', 'w'] as fp2
]:
fp2.write[fp1.read[]]
except OSError as error:
logging.error["This Error Occurred: %s", error]
6 của chúng tôi: ________ 67 và try:
with [
open['orig_file.txt', 'r'] as fp1,
open['new_file.txt', 'w'] as fp2
]:
fp2.write[fp1.read[]]
except OSError as error:
logging.error["This Error Occurred: %s", error]
8 Để truy cập và làm việc với các tệp này, chúng tôi gọi try:
with [
open['orig_file.txt', 'r'] as fp1,
open['new_file.txt', 'w'] as fp2
]:
fp2.write[fp1.read[]]
except OSError as error:
logging.error["This Error Occurred: %s", error]
9 để thay đổi sang thư mục này [thư mục].
Tiếp theo, chúng tôi lấy một danh sách tất cả các tệp nằm trong thư mục làm việc hiện tại [
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]0] và lưu kết quả vào
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]1.
ExitStack
0
Nếu chúng ta xuất nội dung của
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]1 vào thiết bị đầu cuối, chúng ta sẽ có các mục sau: danh sách tất cả các tệp trong thư mục làm việc hiện tại ở định dạng danh sách.
Khởi tạo vòng lặp
import os os.chdir['files'] filelist = os.listdir[os.getcwd[]] for i in filelist: try: with open[i, 'r'] as fp: for line in fp.readlines[]: print[line] except OSError as error: print['error %s', error]6 để đi qua từng tệp trong danh sách và làm như sau:
Mở tệp hiện tại để đọc.
Corporate Trainer [staff of 30+]
Programming Instructor
Implementation Specialist for Navision and Microsoft CRM
Senior PHP Coder