Hướng dẫn how do i open multiple files at a time in python? - làm cách nào để mở nhiều tệp cùng một lúc trong python?

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
    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 4: Mở nhiều tệp văn bản bằng thư viện HĐH và Open []:Open Multiple Text Files using
    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 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]
  • Bản tóm tắt: Open Multiple Text Files using Parenthesized Context Managers and
    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
  • Lập trình viên hài hước: Open Multiple Text Files using the os library and
    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

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 logging
0 function removes any trailing space characters. The newline character [
import logging
1] 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]
1

Phương pháp 2: 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]
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]
9

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à

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 logging
0 loại bỏ bất kỳ ký tự không gian kéo dài nào. Nhân vật Newline [
import logging
1] được thêm vào để đặt từng lần lặp trên dòng riêng của nó.Note: The
import logging
0 function removes any trailing space characters. The newline character [
import logging
1] 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ở
      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 [
      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ở
      0
      enter X1
      enter X2
      enter X3
      3
      exit X3
      exit X2
      exit X1
      0
      [1, 2, 3]
      
      8 [
      0
      enter X1
      enter X2
      enter X3
      3
      exit X3
      exit X2
      exit X1
      0
      [1, 2, 3]
      
      6] để viết.
  • Đó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ụng
    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]
    7.
  • Sau đó, toàn bộ 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 viết lên
    0
    enter X1
    enter X2
    enter X3
    3
    exit X3
    exit X2
    exit X1
    0
    [1, 2, 3]
    
    8.

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ở
      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 [
      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ở
      0
      enter X1
      enter X2
      enter X3
      3
      exit X3
      exit X2
      exit X1
      0
      [1, 2, 3]
      
      8 [
      0
      enter X1
      enter X2
      enter X3
      3
      exit X3
      exit X2
      exit X1
      0
      [1, 2, 3]
      
      6] để viết.

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.

ExitStack0

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

Làm cách nào để đọc nhiều tệp trong Python?

Nhập mô -đun HĐH trong sổ ghi chép của bạn.Xác định một đường dẫn nơi các tệp văn bản được đặt trong hệ thống của bạn.Tạo một danh sách các tệp và lặp lại để tìm xem tất cả chúng có mở rộng chính xác hay không.Đọc các tệp bằng hàm được xác định trong mô -đun.

Làm cách nào để mở nhiều tệp cùng một lúc?

Giữ khóa xuống trong khi nhấp vào các tệp trong Explorer cho phép bạn chọn nhiều tệp một lần, trong khi giữ khóa trong khi nhấp vào danh sách cho phép bạn chọn tất cả các tệp giữa lần nhấp đầu tiên và thứ hai trong một thao tác. lets you select multiple files one at a time, while holding the key down while clicking on a list lets you select all files between the first and second click in one operation.

Bạn có thể làm tổ với Python mở không?

Sử dụng được lồng với các câu lệnh mở trong Python, cũng có thể làm tổ bằng các câu lệnh mở thay vì sử dụng hai câu lệnh mở trong cùng một dòng.It's also possible to nest with open statements instead of using two open statements in the same line.

Bài Viết Liên Quan

Chủ Đề