Примечание: я решил эту проблему, как показано ниже:
Я могу использовать to_csv для записи в stdout в 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)
Но это не похоже на работу.Можно ли сделать то, что я пытаюсь, и если да, то как это сделать?
Примечания:
- Фактический входной файл - «MSA_M2018_dl.xlsx», которыйв zip-файле https://www.bls.gov/oes/special.requests/oesm18ma.zip.
Я загружаю и извлекаю файл данных следующим образом:
curl -o oesm18ma.zip'https://www.bls.gov/oes/special.requests/oesm18ma.zip'
7z x oesm18ma.zip
Я решил проблему следующим образом с помощью скрипта test01.py, который читает из stdin и пишет в stdout.Обратите внимание на использование sys.stdin.buffer в вызове read_excel ().
import sys import os import pandas как pd
BLS_DF = pd.read_excel (sys.stdin.buffer, sheet_name = "MSA_dl", index_col = Нет)
BLS_DF.to_csv (sys.stdout, index = False)
Я вызываю это как:
кошка MSA_M2018_dl.xlsx |python3 test01.py
Это небольшая тестовая программа, иллюстрирующая идею при устранении сложности.Это не та программа, над которой я работаю.