Python 使用pandas read_excel读取标准数据
注:我已按以下方式解决此问题: 我可以用python/pandas来编写标准输出。类似这样的方法很好:Python 使用pandas read_excel读取标准数据,python,excel,pandas,dataframe,stdin,Python,Excel,Pandas,Dataframe,Stdin,注:我已按以下方式解决此问题: 我可以用python/pandas来编写标准输出。类似这样的方法很好: final_df.to_csv(sys.stdout, index=False) 我想读入一个实际的excel文件(不是csv)。我想输出CSV,但输入xlsx。我有这个档案 bls_df = pd.read_excel(sys.stdin, sheet_name="MSA_dl", index_col=None) 但这似乎不起作用。有可能做我正在尝试的事情吗?如果有,怎么做 注: 实际输
final_df.to_csv(sys.stdout, index=False)
我想读入一个实际的excel文件(不是csv)。我想输出CSV,但输入xlsx。我有这个档案
bls_df = pd.read_excel(sys.stdin, sheet_name="MSA_dl", index_col=None)
但这似乎不起作用。有可能做我正在尝试的事情吗?如果有,怎么做
注:
curl -o oesm18ma.zip'https://www.bls.gov/oes/special.requests/oesm18ma.zip'
7z x oesm18ma.zip
import sys
import pandas as pd
import io
csv = ""
for line in sys.stdin:
csv += line
df = pd.read_csv(io.StringIO(csv))
假设sys.stdin是您要读取的excel文件的字符串是否安全?我不确定“字符串”是什么意思。它是excel文件的实际内容。假设我上面的程序名为foo.py,那么我想调用类似于:cat excelfile.xlsx | python3 foo.pystring的内容,即返回字符串的
type()
。你需要给我们提供更多的背景资料。示例数据和更多代码。当然,当你说“这是excel文件的实际内容”时,我不明白。excel文件是二进制文件而不是文本。我可以使用pandas从stdin读取excel,我的问题是pandas似乎只在使用
时成功地从stdin读取excel,而不是cat/path/to/file.xlsx
源文件是一个xlsx,而不是csv。您不能简单地使用cat输出xlsx文件,您要么需要首先转换它,例如使用xlsx2csv,然后将其视为csv,要么需要找到一种方法将其作为字节流提供。我想我认为xlsx2csv会起作用,尽管我确实找到了一种直接执行的方法,正如我在上面修订的问题中所指出的。