2013-08-17 92 views
2

我有一個函數的期望一個文件對象,簡化的示例:您可以將文件內容轉換爲文件對象嗎?

def process(fd): 
    print fd.read() 

這通常被稱爲:

fd = open('myfile', mode='r') 
process(fd) 

我不能改變該功能,並且我已經有內容內存中的文件。有沒有什麼辦法convert文件內容到一個文件對象,而不將其寫入磁盤,所以我可以做這樣的事情:用StringIO

contents = 'The quick brown file' 
fd = convert(contents) # ?? 
process(fd) 

回答

6

你可以這樣做:

該模塊實現類文件類StringIO,讀取並寫入一個字符串緩衝區(也稱爲內存文件)。

from StringIO import StringIO 

def process(fd): 
    print fd.read() 

contents = 'The quick brown file' 

buffer = StringIO() 
buffer.write(contents) 
buffer.seek(0) 

process(buffer) # prints "The quick brown file" 

注意的是Python 3,它被轉移到io包 - 你應該使用from io import StringIO而不是from StringIO import StringIO

+1

您可能想要注意的是,在Python 3中,它已被移入'io'模塊中。 – icktoofay

+0

@icktoofay好點,謝謝 – alecxe

相關問題