Chuỗi PythonIO thành chuỗi

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 StringIO

Sau đâ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

  1. isatty(). Chức năng này của StringIO được sử dụng để trả về Sai nếu luồng không tương tác và Đúng nếu luồng tương tác
  2. có thể đọc được(). Chức năng này của StringIO được sử dụng để trả về Sai nếu tệp không thể đọc được và Đúng nếu tệp có thể đọc được
  3. có thể ghi (). Chức năng này của StringIO được sử dụng để trả về Sai nếu tệp không hỗ trợ ghi và True nếu tệp hỗ trợ ghi
  4. có thể tìm kiếm(). Chức năng này của StringIO được sử dụng để trả về Sai nếu tệp không hỗ trợ truy cập ngẫu nhiên và True nếu tệp hỗ trợ truy cập ngẫu nhiên
  5. đóng cửa. Chức năng này của StringIO được sử dụng để trả về Sai trong trường hợp tệp đang mở và nó trả về True nếu tệp đã đó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