我构建了一个streamlit
应用程序,它需要以非常特定的格式创建一个csv
文件。一个最小的例子看起来像这样:
import streamlit as st
import pandas as pd
import numpy as np
def main():
df1 = pd.DataFrame(np.random.randint(0, 100, size=(5, 4)))
df2 = pd.DataFrame(np.random.randint(0, 100, size=(5, 4)))
df3 = pd.DataFrame(np.random.randint(0, 100, size=(5, 4)))
di = {'df1': df1, 'df2': df2, 'df3': df3}
fn = 'export.csv'
with open(fn, 'w+') as f:
for k, v in di.items():
f.write(f'{k}\n')
v.to_csv(f, header=False, index=False)
f.write('\n')
with open(fn, 'rb') as file:
st.download_button(
'Download file',
data=file,
file_name=fn,
mime='text/csv'
)
if __name__ == "__main__":
main()
字符串
在这个例子中,它看起来是这样的
的数据
虽然这是可行的,但我不喜欢我首先创建一个文件,我需要存储,以后再次打开它。
我怎样才能获得完全相同的输出,但不先创建此文件?我尝试使用v.to_string()
通过字符串连接,但输出似乎是空格分隔的,而不是逗号分隔的。
1条答案
按热度按时间643ylb081#
好吧,看来我是在正确的轨道上与字符串,但我仍然需要
BytesIO
;这段代码现在似乎可以用了:字符串