Làm cách nào để tạo một đối tượng giống như tệp (cùng loại vịt với Tệp) với nội dung của một chuỗi?Làm cách nào để bọc một chuỗi trong một tệp bằng Python?
Trả lời
Đố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')
Trong Python 3.0:
import io
with io.StringIO() as f:
f.write('abcdef')
print('gh', file=f)
f.seek(0)
print(f.read())
@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
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:
"Không tìm thấy trang" - http://www.rfk.id.au/software/projects/filelike/api/filelike.htm – jfs
Thật đáng tiếc. Không thể tìm thấy thư mục gốc ... –
Dường như đã sao lưu bây giờ (7 năm sau;) –
này hoạt động cho Python2.7 và Python3.x:
io.StringIO(u'foo')
- 1. Làm cách nào để bọc một lớp C++ bằng Cython?
- 2. Làm cách nào để gzip nén một chuỗi bằng Python?
- 3. Một cách hay để tạo chuỗi dài bọc cho dòng mới bằng Python?
- 4. Python - Cách cắt một chuỗi bằng Python?
- 5. Làm cách nào để bọc một hàm trong Javascript?
- 6. Làm cách nào để tìm một số trong chuỗi bằng Python?
- 7. Làm cách nào để thay thế một cột trong tệp CSV bằng Python?
- 8. Tôi làm cách nào để tạo một trình bao bọc?
- 9. Làm thế nào để liệt kê một chuỗi hình ảnh một cách hiệu quả? Numercial so sánh chuỗi bằng Python
- 10. Làm cách nào để lấy một loại nội dung của một tệp bằng Python? (Với url ..)
- 11. Làm cách nào để đọc số lượng tệp trong một thư mục bằng Python?
- 12. Nhóm một chuỗi bằng Python
- 13. Làm cách nào để bọc một hàm tạo?
- 14. Làm thế nào để tách một chuỗi trong Python?
- 15. Làm thế nào để bọc văn bản trong một JTextArea
- 16. Làm cách nào để căn giữa một chuỗi bằng String.format?
- 17. Làm cách nào để chụp một dòng mp3 bằng python
- 18. Làm cách nào để thiết kế một lớp bằng Python?
- 19. Làm cách nào để nhận mã thông báo tiếp theo (int, float hoặc chuỗi) từ một tệp bằng Python?
- 20. Làm thế nào để kích hoạt dòng bọc chỉ cho một số loại tệp trong Vim?
- 21. Làm cách nào để kiểm tra chuỗi cho một chữ cái nhất định bằng Python?
- 22. Làm cách nào để bọc một cuộc gọi lại bằng các loại Lớp phủ JavaScript (GWT)?
- 23. Làm thế nào để thay thế một chuỗi bằng một chuỗi khác trong haskell
- 24. Đúc một int vào một chuỗi bằng Python
- 25. Làm cách nào để bọc một nhóm các phần tử liền kề bằng XSLT?
- 26. Làm cách nào để tính toán tổng kiểm tra md5 của một tệp bằng Python?
- 27. Làm thế nào để bọc một chức năng bằng cách sử dụng varargin và varargout?
- 28. Làm cách nào để mở một tệp Unicode bằng Perl?
- 29. Tạo một DLL từ một tệp cpp bọc với SWIG
- 30. Làm cách nào để lặp lại các tệp bằng Python?
Có lý do để sử dụng cStringIO: cStringIO không hỗ trợ chuỗi unicode. –
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 .. –
Điều này cũng hoạt động với Python2.7: 'io.StringIO (u'foo ')' Tôi sẽ sử dụng – guettli