我想用结构获取远程文件的内容,而不创建临时文件。
问问题
8905 次
3 回答
25
from StringIO import StringIO
from fabric.api import get
fd = StringIO()
get(remote_path, fd)
content=fd.getvalue()
于 2013-10-12T19:47:17.300 回答
12
io.StringIO
使用 Python 3(和 fabric3),我在使用:时遇到这个致命错误string argument expected, got 'bytes'
,显然是因为 Paramiko 使用字节写入类文件对象。所以我转而使用io.BytesIO
它并且它有效:
from io import BytesIO
def _read_file(file_path, encoding='utf-8'):
io_obj = BytesIO()
get(file_path, io_obj)
return io_obj.getvalue().decode(encoding)
于 2018-04-19T19:22:37.793 回答
3
import tempfile
from fabric.api import get
with tempfile.TemporaryFile() as fd:
get(remote_path, fd)
fd.seek(0)
content=fd.read()
请参阅:http ://docs.python.org/2/library/tempfile.html#tempfile.TemporaryFile
和:http ://docs.fabfile.org/en/latest/api/core/operations.html#fabric.operations.get
于 2013-10-11T13:11:38.197 回答