Я хочу использовать следующую консольную программу, чтобы получить информацию о типе (, а не данные) поставщика Csv. Имя файла будет передано как аргумент командной строки. Однако, кажется, CsvProvider<>
принимает только постоянный литерал.Вывести информацию о типе для любых произвольных файлов CSV?
Есть ли способ обходного пути? Или это можно сделать с помощью скрипта F #? Или может помочь служба компилятора F #?
Или есть ли какой-либо другой проект?
open FSharp.Data
open Microsoft.FSharp.Collections
open System
[<Literal>]
let fn = """C:\...\myfile.csv""" // Want to dynamically set the fn from arguments
[<EntryPoint>]
let main argv =
let myFile = CsvProvider<fn>.GetSample()
// The following doesn't work
let fn = argv.[0]
let myFile = CsvProvider<fn>.GetSample()
// code to get type information of myFile
Спасибо. В одном из моих проектов я хочу использовать функции автоматического обнаружения/вывода данных типа CSV типа, чтобы получить типы столбцов любых произвольных файлов CSV. CsvFile не выводит/не выводит тип столбцов CSV, поэтому он не поможет. Вот почему я решил использовать динамический скрипт Create F # или службу компилятора F # с провайдером типа CSV для его достижения. – ca9163d9
Или есть другие проекты F #, которые автоматически получают типы столбцов плоских файлов? На самом деле я думаю, что F # Data Type provider может экспортировать такую очень полезную функцию, так как у нее уже есть что-то встроенное. – ca9163d9
AFAIK, вывод типа в настоящее время не отображается в общедоступном API, но вы, безусловно, можете получить к нему доступ - хотя вам может понадобиться скопируйте соответствующие файлы из F # Data. Например, Deedle делает именно это: https://github.com/BlueMountainCapital/Deedle/blob/master/src/Deedle/FrameUtils.fs#L426 –