在F中使用CsvProvider#

在F中使用CsvProvider#,csv,io,f#,f#-data,Csv,Io,F#,F# Data,我是F#的初学者,我正在尝试使用CsvProvider并重现这里给出的示例 所以在F#interactive中,我输入 >type Stocks = CsvProvider<"MSFT.csv">;; type Stocks = CsvProvider<...> > let msft = CsvProvider<"MSFT.csv">.GetSample();; val msft : CsvProvider<...> >

我是F#的初学者,我正在尝试使用CsvProvider并重现这里给出的示例

所以在F#interactive中,我输入

>type Stocks = CsvProvider<"MSFT.csv">;;

type Stocks = CsvProvider<...>

> let msft = CsvProvider<"MSFT.csv">.GetSample();;

val msft : CsvProvider<...>

> msft;;
val it : CsvProvider<...> =
  FSharp.Data.Runtime.CsvFile`1[System.Tuple`1[System.String]]

    {Headers = Some [|"MSFT.csv"|];
 NumberOfColumns = 1;
 Quote = '"';
 Rows = seq [];
 Separators = ",";}

> let firstRow = msft.Rows |> Seq.head;;
System.ArgumentException: The input sequence was empty.
Parameter name: source
>    at Microsoft.FSharp.Collections.SeqModule.Head[T](IEnumerable`1 source)
   at <StartupCode$FSI_0044>.$FSI_0044.main@()
Stopped due to error
请帮忙!!!我已经试了好几个小时了!谢谢

编辑:以下是F#interactive的完整日志

Microsoft (R) F# Interactive version 14.0.23020.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> #r "C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\packages\FSharp.Data.2.2.5\lib\portable-net40+sl5+wp8+win8\FSharp.Data.dll"
open FSharp.Data;;

--> Referenced 'C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\packages\FSharp.Data.2.2.5\lib\portable-net40+sl5+wp8+win8\FSharp.Data.dll'

> open FSharp.Data;;
> #I "C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I";;

--> Added 'C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I' to library include path

> let msft = CsvProvider<"MSFT.csv">.GetSample();;

val msft : CsvProvider<...>

> msft;;
val it : CsvProvider<...> =
  FSharp.Data.Runtime.CsvFile`1[System.Tuple`1[System.String]]
    {Headers = Some [|"MSFT.csv"|];
     NumberOfColumns = 1;
     Quote = '"';
     Rows = seq [];
     Separators = ",";}
> let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;

  let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;
  ---------------------------------------------------------------------------------------------------^^^^^^^^^

stdin(7,100): error FS0039: The field, constructor or member 'GetSample' is not defined
> let msft = CsvProvider<"MSFT.csv">.GetSample();;

val msft : CsvProvider<...>

> let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;

  let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;
  ---------------------------------------------------------------------------------------------------^^^^^^^^^

stdin(9,100): error FS0039: The field, constructor or member 'GetSample' is not defined
> 
Microsoft(R)F#交互式版本14.0.23020.0
版权所有(c)微软公司。版权所有。
如需帮助,请键入#help;;
>#r“C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo-Stanford I\packages\Fsharp.Data.2.2.5\lib\portable-net40+sl5+wp8+win8\Fsharp.Data.dll”
打开FSharp.Data;;
-->引用的“C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo-Stanford I\packages\Fsharp.Data.2.2.5\lib\portable-net40+sl5+wp8+win8\Fsharp.Data.dll”
>打开FSharp.Data;;
>#I“C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo-Stanford I”;;
-->将“C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I”添加到库包含路径
>设msft=CsvProvider.GetSample();;
val msft:CsvProvider
>msft;;
val it:CsvProvider=
FSharp.Data.Runtime.CsvFile`1[System.Tuple`1[System.String]]
{Headers=Some[|“MSFT.csv”|];
NumberOfColumns=1;
引号=“”;
行=顺序[];
分隔符=“,”;}
>设msft=CsvProvider.GetSample();;
设msft=CsvProvider.GetSample();;
---------------------------------------------------------------------------------------------------^^^^^^^^^
stdin(7100):错误FS0039:未定义字段、构造函数或成员“GetSample”
>设msft=CsvProvider.GetSample();;
val msft:CsvProvider
>设msft=CsvProvider.GetSample();;
设msft=CsvProvider.GetSample();;
---------------------------------------------------------------------------------------------------^^^^^^^^^
stdin(9100):错误FS0039:未定义字段、构造函数或成员“GetSample”
> 
我猜F#Interactive在当前目录中查找
MSFT.csv
文件时有困难。您可以使用
文本指定相对于当前目录的完整路径:

let [<Literal>] Sample = __SOURCE_DIRECTORY__ + "\\MSFT.csv"
type Stocks = CsvProvider<Sample>
let[]Sample=\uuuuuu源目录\uuuuu+“\\MSFT.csv”
类型股票=CsvProvider
然后可以调用
Stocks.GetSample()
来读取文件


这种错误有时发生在F#Interactive中,尤其是在不同文件夹中的文件之间切换时(我认为F#Interactive记得上次执行命令的文件夹,但我认为它的行为并不总是如预期的那样)。

CSV文件的内容是什么?(我怀疑它是空的)这是我在http链接上找到的同一个文件。它是一个321ko文件。这是前两行日期,打开、高、低、关闭、音量、调整关闭2012-01-27,29.45,29.53,29.17,29.2344187700,29.23 2012-01-26,29.61,29.70,29.40,29.5049102800,29.50。我无法重现这个问题。当你下载该文件时,如果你在Windows上,你做了什么e确定您打开了文件的属性并取消了阻止?出于安全原因,从internet下载的文件通常会被“锁定”,这可能也会影响CSV提供商。我确实在Windows上,但该文件没有被阻止。我对其他文件也有同样的问题。我可以在写字板中毫无问题地打开它们。为了清晰起见我已经在F#interactive中复制/粘贴了整个会话。当进入完整路径时,您需要避开反斜杠。您可以编写
CsvProvider<@“C:\foo.csv”>
CsvProvider
>让msft=CsvProvider.GetSample();让msft=CsvProvider.GetSample();;---------------------------------------------------------------------------------------------------------------stdin(11101):错误FS0039:未定义字段、构造函数或成员“GetSample”
>let msft=CsvProvider.GetSample();;;----------------------------------------------------------------------------------------------------------------------------------------^^^ stdin(12112):错误FS0010:在引号文字中的这一点或之前的结构化构造不完整。应为引号结尾或其他标记。
@
符号-
CsvProvider<@…“>
。这有点傻,但这是F#解析器工作方式的产物。
Microsoft (R) F# Interactive version 14.0.23020.0
Copyright (c) Microsoft Corporation. All Rights Reserved.

For help type #help;;

> #r "C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\packages\FSharp.Data.2.2.5\lib\portable-net40+sl5+wp8+win8\FSharp.Data.dll"
open FSharp.Data;;

--> Referenced 'C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\packages\FSharp.Data.2.2.5\lib\portable-net40+sl5+wp8+win8\FSharp.Data.dll'

> open FSharp.Data;;
> #I "C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I";;

--> Added 'C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I' to library include path

> let msft = CsvProvider<"MSFT.csv">.GetSample();;

val msft : CsvProvider<...>

> msft;;
val it : CsvProvider<...> =
  FSharp.Data.Runtime.CsvFile`1[System.Tuple`1[System.String]]
    {Headers = Some [|"MSFT.csv"|];
     NumberOfColumns = 1;
     Quote = '"';
     Rows = seq [];
     Separators = ",";}
> let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;

  let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;
  ---------------------------------------------------------------------------------------------------^^^^^^^^^

stdin(7,100): error FS0039: The field, constructor or member 'GetSample' is not defined
> let msft = CsvProvider<"MSFT.csv">.GetSample();;

val msft : CsvProvider<...>

> let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;

  let msft = CsvProvider<"C:\Users\Fagui\Documents\GitHub\Learning Fsharp\Algo Stanford I\MSFT.csv">.GetSample();;
  ---------------------------------------------------------------------------------------------------^^^^^^^^^

stdin(9,100): error FS0039: The field, constructor or member 'GetSample' is not defined
> 
let [<Literal>] Sample = __SOURCE_DIRECTORY__ + "\\MSFT.csv"
type Stocks = CsvProvider<Sample>