在python中将字节转换为文件对象

在python中将字节转换为文件对象,python,string,file,bytestream,Python,String,File,Bytestream,我有一个小应用程序,它使用以下命令读取本地文件: 以csv\u文件的形式打开(diefile\u路径,'r') 作为文件打开(diefile\u路径,'r') 并使用线路缓存模块 我需要将使用范围扩展到从远程服务器发送的文件。 服务器接收的内容类型为字节 我找不到很多关于处理IOBytes类型的信息,我想知道是否有一种方法可以将bytes块转换为类似文件的对象。 我的目标是使用上面指定的API(open,linecache) 我能够使用data.decode(“utf-8”), 但是我不能使用上

我有一个小应用程序,它使用以下命令读取本地文件:
以csv\u文件的形式打开(diefile\u路径,'r')

作为文件打开(diefile\u路径,'r')

并使用线路缓存模块

我需要将使用范围扩展到从远程服务器发送的文件。
服务器接收的内容类型为字节

我找不到很多关于处理IOBytes类型的信息,我想知道是否有一种方法可以将bytes块转换为类似文件的对象。
我的目标是使用上面指定的API(
open
linecache

我能够使用
data.decode(“utf-8”)

但是我不能使用上面的方法(
open
linecache

一个小例子来说明

data = 'b'First line\nSecond line\nThird line\n'

with open(data) as file:
    line = file.readline()
    print(line)
输出:

First line
Second line
Third line

可以吗?

open
用于打开实际文件,返回类似文件的对象。在这里,您已经将数据存储在内存中,而不是文件中,因此可以直接实例化类似文件的对象

import io


data = b'First line\nSecond line\nThird line\n'
file = io.StringIO(data.decode())
for line in file:
    print(line.strip())
lines = data.decode().strip().split('\n')
然而,如果您得到的只是一个换行符分隔的字符串,您可以直接将其拆分为一个列表

import io


data = b'First line\nSecond line\nThird line\n'
file = io.StringIO(data.decode())
for line in file:
    print(line.strip())
lines = data.decode().strip().split('\n')

主要区别在于
StringIO
版本稍微懒惰一些;与列表相比,它的内存足迹更小,因为它根据迭代器的请求拆分字符串。

open
用于打开实际文件,返回类似文件的对象。在这里,您已经将数据存储在内存中,而不是文件中,因此可以直接实例化类似文件的对象

import io


data = b'First line\nSecond line\nThird line\n'
file = io.StringIO(data.decode())
for line in file:
    print(line.strip())
lines = data.decode().strip().split('\n')
然而,如果您得到的只是一个换行符分隔的字符串,您可以直接将其拆分为一个列表

import io


data = b'First line\nSecond line\nThird line\n'
file = io.StringIO(data.decode())
for line in file:
    print(line.strip())
lines = data.decode().strip().split('\n')

主要区别在于
StringIO
版本稍微懒惰一些;与列表相比,它的内存足迹更小,因为它根据迭代器的请求拆分字符串。

谢谢,因此据我所知,我必须将API更改为“打开”以外的其他内容谢谢,因此据我所知,我必须将API更改为“打开”以外的内容