2008-09-26 26 views

Trả lời

81

Đối với Python 2.x, hãy sử dụng mô-đun StringIO. Ví dụ:

>>> from cStringIO import StringIO 
>>> f = StringIO('foo') 
>>> f.read() 
'foo' 

Tôi sử dụng cStringIO (nhanh hơn), nhưng lưu ý rằng nó không accept Unicode strings that cannot be encoded as plain ASCII strings. (Bạn có thể chuyển sang StringIO bằng cách thay đổi "từ cStringIO" thành "từ StringIO".)

Đối với Python 3.x, sử dụng mô-đun io.

f = io.StringIO('foo') 
+1

Có lý do để sử dụng cStringIO: cStringIO không hỗ trợ chuỗi unicode. –

+3

Tôi nghĩ rằng một ý tưởng tốt hơn là làm 'nhập cStringIO thành StringIO'. Bằng cách đó, nếu bạn cần chuyển sang triển khai python tinh khiết vì bất kỳ lý do nào, bạn chỉ cần thay đổi một dòng .. –

+0

Điều này cũng hoạt động với Python2.7: 'io.StringIO (u'foo ')' Tôi sẽ sử dụng – guettli

22

Trong Python 3.0:

import io 

with io.StringIO() as f: 
    f.write('abcdef') 
    print('gh', file=f) 
    f.seek(0) 
    print(f.read()) 
+0

@ABB câu trả lời được chấp nhận cho biết cách sử dụng như vậy. Câu trả lời của tôi là bổ sung: nó thể hiện các câu lệnh 'with'-statement và write, print, seek, read. – jfs

2

Hai câu trả lời tốt. Tôi muốn thêm một mẹo nhỏ - nếu bạn cần một đối tượng tập tin thực tế (một số phương thức yêu cầu một, không chỉ là một giao diện), đây là một cách để tạo ra một bộ chuyển đổi:

+0

"Không tìm thấy trang" - http://www.rfk.id.au/software/projects/filelike/api/filelike.htm – jfs

+0

Thật đáng tiếc. Không thể tìm thấy thư mục gốc ... –

+1

Dường như đã sao lưu bây giờ (7 năm sau;) –

1

này hoạt động cho Python2.7 và Python3.x:

io.StringIO(u'foo') 
Các vấn đề liên quan