💬 Câu hỏi: Làm thế nào để chuyển hướng đầu ra tiêu chuẩn trong Python và lưu trữ nó dưới dạng chuỗi trong một biến?Question: How to redirect the standard output in Python and store it as a string in a variable? Bài viết này sẽ hướng dẫn bạn qua bảy bước dễ dàng để giải quyết vấn đề này. Như một cái nhìn tổng quan, ở đây, mã trong tám dòng lưu trữ đầu ra tiêu chuẩn trong một biến Hãy cùng đi qua các bước đó từng bước một, chúng tôi sẽ kiểm tra mã đầy đủ để sao chép & dán vào cuối bài viết này, vì vậy hãy đọc tiếp! 👀we’ll examine the full code for copy&paste at the end of this article, so read on! 👀my_result
:from io import StringIO
tmp = sys.stdout
0tmp = sys.stdout
1tmp = sys.stdout
2tmp = sys.stdout
3tmp = sys.stdout
4tmp = sys.stdout
5tmp = sys.stdout
6
Bước 1: Nhập thư viện Stringio và SYS
Bước 2: Giữ stdout trong biến tạm thời
from io import StringIO import sys
Bước 3: Chụp đầu ra tiêu chuẩn bằng cách sử dụng đối tượng Stringio
Bước 2: Giữ stdout trong biến tạm thời
Bước 3: Chụp đầu ra tiêu chuẩn bằng cách sử dụng đối tượng Stringio
tmp = sys.stdout
Bước 3: Chụp đầu ra tiêu chuẩn bằng cách sử dụng đối tượng Stringio
Bước 4: Gán luồng đầu ra tiêu chuẩn cho đối tượng Stringio
my_result = StringIO[]
Bước 5: In vào đầu ra tiêu chuẩn
Bước 4: Gán luồng đầu ra tiêu chuẩn cho đối tượng Stringio
Bước 5: In vào đầu ra tiêu chuẩn
sys.stdout = my_result
Bước 5: In vào đầu ra tiêu chuẩn
Bước 6: Dọn dẹp bằng cách chuyển hướng Stdout sang Python Shell
Bước 7: Nhận và in chuỗi từ stdout
print['hello world']
Mã đầy đủNote: No output appears on the screen anymore because the standard output is now redirected to the variable.
Bước 6: Dọn dẹp bằng cách chuyển hướng Stdout sang Python Shell
Bước 7: Nhận và in chuỗi từ stdout
sys.stdout = tmp
Bước 7: Nhận và in chuỗi từ stdout
Mã đầy đủ
print[result.getvalue[]]
Mã đầy đủ
Nhập hai thư viện
tmp = sys.stdout7 và
tmp = sys.stdout8 để truy cập vào đầu ra tiêu chuẩn và lưu trữ luồng đầu vào chuỗi-đầu ra.
# Step 1 from io import StringIO import sys # Step 2 tmp = sys.stdout # Step 3 my_result = StringIO[] # Step 4 sys.stdout = my_result # Step 5 print['hello world'] # Step 6 sys.stdout = tmp # Step 7 print['VARIABLE:', my_result.getvalue[]] # hello world
Cả hai mô -đun là một phần của thư viện tiêu chuẩn, vì vậy không cần phải cài đặt chúng với PIP!
Chúng tôi sẽ ghi đè lên đầu ra tiêu chuẩn để bắt mọi thứ được ghi vào nó. Để đặt lại mã của bạn về trạng thái bình thường, chúng tôi cần nắm bắt luồng đầu ra tiêu chuẩn ban đầu bằng cách giới thiệu một biến tạm thời.Try it yourself: Click to run in Jupyter Notebook [Google Colab]
Tạo một biến và gán một đối tượng tmp = sys.stdout
7 cho biến để chụp luồng đầu ra tiêu chuẩn.
- //wrongsideofmemphis.com/2010/03/01/store-standard-output-on-a-variable-in-python/
Bây giờ, đối tượng này có thể lưu trữ mọi thứ được in vào đầu ra tiêu chuẩn. Nhưng chúng ta phải kết nối nó trước với stdout!
Gán đối tượng
tmp = sys.stdout7 được tạo trong bước trước cho đầu ra tiêu chuẩn được chụp bằng
my_result = StringIO[]1.
Từ thời điểm này trở đi, bất cứ điều gì được in bằng câu lệnh
my_result = StringIO[]2 bởi bất kỳ chức năng nào bạn gọi trong tập lệnh Python của bạn đều được viết trong đối tượng
tmp = sys.stdout7 được đề cập bởi biến
my_result
.Sau đây minh họa cho tuyên bố
my_result = StringIO[]5 nhưng bạn có thể làm bất cứ điều gì ở đây: