Ваш конвейер выглядит правильно, поэтому я подозреваю, что ваша проблема в том, что CsvFile.Load
задокументировано для получения URI, а не имени файла .Чтобы проверить, правильно ли вы получаете имя файла, я сначала заменил бы CsvFile.Load
на printfn "Got result: %s"
в вашем конвейере, чтобы проверить, получаете ли вы ожидаемое имя файла.Тогда, если это то, что вы ожидаете (и я думаю, что это будет), вы можете добавить еще один шаг в конвейер:
[<EntryPoint>]
let main argv =
let data =
argv.[0]
|> Path.Combine Environment.CurrentDirectory
|> sprintf "file://%s" // Convert filename to URI
|> CsvFile.Load
printfn "%A" data.Headers
0
Поскольку вы, очевидно, новичок в F #, я расширю эти шаги внемного, чтобы вы могли подтвердить, что ваша интуиция верна:
argv.[0]
|> Path.Combine Environment.CurrentDirectory
Это похоже на вызов Path.Combine Environment.CurrentDirectory argv.[0]
.
argv.[0]
|> Path.Combine Environment.CurrentDirectory
|> sprintf "file://%s" // Convert filename to URI
Это похоже на вызов sprintf "file://%s" (Path.Combine Environment.CurrentDirectory argv.[0])
.
argv.[0]
|> Path.Combine Environment.CurrentDirectory
|> sprintf "file://%s" // Convert filename to URI
|> CsvFile.Load
Это похоже на звонок CsvFile.Load (sprintf "file://%s" (Path.Combine Environment.CurrentDirectory argv.[0]))
.
Из того, что вы сказали в своем вопросе, похоже, что это согласуется с вашим пониманием, потому что вы правильно понимаете трубы.Так что просто передайте CsvFile.Load
URI вместо имени файла, и все будет в порядке.