Tài liệu. stringio-ví dụ-3. py nhập StringIO nhập chuỗi, sys stdout = sys. hệ thống thiết bị xuất chuẩn. thiết bị xuất chuẩn = tệp = StringIO. StringIO() print """ Theo truyện dân gian Gbaya, mánh khóe và thủ đoạn là cách tốt nhất để đánh bại mãng xà, vua của loài rắn, vốn được nở ra từ một con rồng khi mới hình thành thế giới. -- National Geographic, tháng 5 năm 1997 """ sys. tiêu chuẩn StringIO ghi vào chuỗi. Loại Python này sử dụng cú pháp tương tự như đối với tệp. Chúng ta có thể sử dụng lệnh gọi phương thức in hoặc gọi phương thức ghi Đầu tiên chúng tôi nhập không gian tên io. Chúng tôi tạo một luồng mới bằng cách gọi io. chuỗiIO. cái này trả về một biến luồng. Tiếp theo, trong vòng lặp for, tôi ghi một số dữ liệu vào luồng của mình Viết Chúng tôi gọi phương thức ghi để xuất dữ liệu vào luồng của chúng tôi. Nó chỉ được lưu trữ trong bộ nhớ. Một cuộc gọi print() cũng hoạt động Getvalue Phương thức getvalue trả về một chuỗi chứa dữ liệu được ghi vào bộ đệm trong bộ nhớ Đóng Chúng tôi gọi phương thức đóng để ngăn ghi thêm vào luồng StringIO của chúng tôi. Đây là vệ sinh tốt nhập io ra = io. StringIO() # In các giá trị chuỗi này trong một vòng lặp. cho tôi trong phạm vi (0, 100). ngoài. ghi ("Giá trị =") ra. viết (str (i)) ra. write(" ") # Lấy chuỗi và hiển thị 20 ký tự đầu tiên. dữ liệu = ra. getvalue() in(dữ liệu[0. 20]) ra. close() Giá trị = 0 Giá trị = 1 In. Chúng ta không cần sử dụng write() để viết với StringIO. Thay vào đó, chúng ta có thể sử dụng print() và chỉ định đối số "tệp" tùy chọn. Phương pháp in có thể nhắm mục tiêu bất kỳ luồng IO tương thích nào nhập io ra = io. StringIO() # In ra luồng StringIO, không có ký tự kết thúc. print("Xin chào", file=out, end="") # In nội dung chuỗi ra bàn điều khiển. in ra. getvalue())Xin chào Hiệu suất. StringIO có nhanh hơn một loạt các chuỗi nối thêm không? Kết quả tôi thấy StringIO nhanh hơn, trong hai lần triển khai Python. Trong PyPy, StringIO nhanh hơn gần gấp đôi so với chuỗi nối thêm Lưu ý Kiểm tra nếu trong các vòng chuẩn chỉ là kiểm tra độ chính xác đơn giản. Các chuỗi phải bắt đầu bằng chữ V nhập io thời gian nhập in (thời gian. thời gian()) # 1. Sử dụng StringIO. cho x trong phạm vi (0, 10000). ra = io. StringIO() cho tôi trong phạm vi (0, 100). ngoài. ghi ("Giá trị =") ra. viết (str (i)) ra. write(" ") # Lấy chuỗi. nội dung = ra. getvalue() ra. close() # Kiểm tra chữ cái đầu tiên. nếu nội dung [0]. = 'V'. nâng cao Lỗi in (thời gian. thời gian()) # 2. Sử dụng chuỗi nối thêm. cho x trong phạm vi (0, 10000). dữ liệu = "" cho tôi trong phạm vi (0, 100). dữ liệu += "Giá trị = " dữ liệu += str(i) dữ liệu += " " # Kiểm tra chữ cái đầu tiên. nếu dữ liệu [0]. = 'V'. nâng cao Lỗi in (thời gian. thời gian())1404346870. 027 [PyPy3 2. 3. 1] 1404346870. 286 ChuỗiIO. 0. 259 giây 1404346870. 773 Concat. 0. 487 giây 1404346852. 222672 [Trăn 3. 3] 1404346853. 343738 ChuỗiIO. 1. 121 giây 1404346854. 814824 Concat. 1. 471 giây Đó là mô-đun StringIO là một đối tượng giống như tệp trong bộ nhớ. Nó có thể được sử dụng để nhập hoặc xuất phần lớn các chức năng mà người dùng có thể mong đợi từ một đối tượng tệp thông thường. Khi người dùng tạo các đối tượng StringIO, ban đầu nó được tạo bằng cách cung cấp một chuỗi cho hàm tạo. Nếu không có chuỗi, StringIO sẽ trống. Trong cả hai trường hợp, con trỏ được hiển thị ban đầu trên tệp sẽ bắt đầu từ số không Mô-đun này không có sẵn trong phiên bản Python mới nhất; . chuỗiIO Ví dụ đầu ra This is the initialized string. The file of the string after writing in it is: This is the initialized string. Welcome to Javatpoint.com. Các phương thức quan trọng của StringIOSau đây là một số phương thức của StringIO 1. chuỗiIO. nhận giá trị(). Hàm này dùng để trả về toàn bộ nội dung của file cú pháp Cú pháp của phương thức trên là Ví dụ đầu ra Hello and thank you for visiting to Javatpoint.com 2. Trong phần này, chúng ta xem xét một số hàm của StringIO trả về giá trị Boolean, i. e. , sai hoặc đúng
cú pháp Cú pháp của phương thức trên là Ví dụ đầu ra Is the file stream above interactive? False Is the file stream above readable? True Is the file stream above writable True Is the file stream above seekable? True Is the file above closed? False 3. chuỗiIO. tìm kiếm(). Hàm seek() được sử dụng để đặt vị trí của con trỏ trong tệp. Nếu chúng ta thực hiện bất kỳ thao tác ghi hoặc đọc nào trên tài liệu, con trỏ sẽ được đặt trên chỉ mục được sử dụng lần cuối để chúng ta có thể di chuyển con trỏ từ vị trí bắt đầu của tệp. seek() được sử dụng cú pháp Cú pháp của phương thức trên là Ví dụ đầu ra Hello and thank you for visiting to Javatpoint.com. Hello and thank you for visiting to Javatpoint.com. 4. chuỗiIO. cắt ngắn(). Chức năng này được sử dụng để thay đổi kích thước kích thước của luồng tệp. Phương pháp này lưu tệp và xóa tệp sau chỉ mục đã cho cú pháp Cú pháp của phương thức trên là Ví dụ đầu ra Hello and welcome to Javatpoint.com. Hello and welc 5. chuỗiIO. kể(). Phương pháp này được sử dụng để cho biết vị trí con trỏ và luồng hiện tại của tệp cú pháp Cú pháp của phương thức trên là Ví dụ đầu ra 6. chuỗiIO. close() Điều này được sử dụng để đóng tập tin. Chức năng này được gọi trên một tệp và chúng tôi không thể thực hiện bất kỳ thao tác nào trên tệp đó. Bất kỳ thao tác nào được thực hiện sẽ dẫn đến ValueError |