我正在寻找一种通过GoLang或Javascript读取羽毛文件的方法,或者一些不需要用户进行其他额外安装的其他语言。
我的目标是提供一个用户界面来读取羽毛csv文件,并将其转换回人类可读的csv。然而,在如何解决这个问题上,我找不到多少资源。
目前,我有一个测试羽毛文件生成如下。
import pandas as pd
import datetime
import numpy as np
import pyarrow.feather as feather
# Create a dummy dataframe
todays_date = datetime.datetime.now().date()
index = pd.date_range(todays_date-datetime.timedelta(10), periods=10, freq='D')
columns = ['A','B', 'C']
df = pd.DataFrame(index=index, columns=columns)
df = df.fillna(0) # with 0s rather than NaNs
feather.write_feather(df, 'test_feather.csv')提前谢谢。
发布于 2021-04-26 15:37:30
Javascript包apache-arrow附带了一个能够做到这一点的脚本。您可以在这里找到脚本的源代码:https://github.com/apache/arrow/blob/master/js/bin/arrow2csv.js
如果它没有做您想做的事情,那么脚本应该作为如何使用API在羽毛文件中读取的示例。
发布于 2021-04-30 01:27:34
谢谢“佩斯”中的暗示。结果发现,我可以简单地使用arrow.Table.from([arrow])函数将.feather文件转换为csv。对于遇到相同问题的人,您可以找到下面的代码作为参考。
const apArrow = require('apache-arrow');
const fs = require('fs');
const outputDir = 'output/feather';
const writeIntoFile = (data) => {
fs.appendFileSync(`${outputDir}/test_feather.csv`, data, function (err) {
if (err) return console.log(err);
});
};
const readDataFromRow = (fields, row) => {
return fields
.map((f) => row.get(f))
.join(',');
};
const arrowReader = (filePath) => {
console.log('filePath', filePath);
const arrow = fs.readFileSync(filePath);
const table = apArrow.Table.from([arrow]);
const columns = table.schema.fields.map((f) => f.name);
let buf = columns.join(',') + '\n';
for (let i = 0; i < table.count(); i++) {
const rowData = readDataFromRow(columns, table.get(i));
buf += `${rowData}\n`;
// export to csv every 10000 rows
if (i % 10000 === 0) {
writeIntoFile(buf);
buf = '';
if (i > 0) {
break;
}
}
}
writeIntoFile(buf);
};https://stackoverflow.com/questions/67260326
复制相似问题