【问题标题】:using type in place of cat [closed]使用类型代替 cat [关闭]
【发布时间】:2018-07-12 04:03:57
【问题描述】:

我目前正在阅读 Wes McKinney 的 Python for Data Analysis 一书。我在第 6 章的一个例子中遇到了问题。

他进入 Jupyter:

!cat examples/cs1.csv
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo

后面有一个简短的框,说明如果您使用的是 Windows,请使用 type 命令代替 cat。 我输入了以下内容:

!type examples/ex1.csv
a,b,c,d,message
1,2,3,4,hello
5,6,7,8,world
9,10,11,12,foo

但出现错误:

NameError: name 'a' is not defined

对于这个实例,如何使用 type 命令代替 cat?在 Windows 10 上运行 Python 3.6.5。

【问题讨论】:

  • 输入!type examples/ex1.csv
  • 为了澄清,您不要输入a,b,c...。第一行是您需要输入的内容。
  • cat 命令下面的都是文件examples/cs1.csv 的内容。

标签: python jupyter-notebook


【解决方案1】:

命令是!type examples/ex1.csv。剩下的四行是相关文件的内容。

在最简单的用法中,windows type 和 Unix cat 命令将参数中指定的文件的内容输出到标准输出。

前缀 ! 告诉 IPython/Jupyter 将该行的剩余部分发送到系统 shell 而不是 Python 解释器。

通常,当显示包含输入和输出的整个会话时,会给出某种指示,说明哪些行是输入,哪些是输出。 IPython 会话通常在输入前加上In[1]:,在输出前加上Out[1]:。普通 Python 会话通常在输入前加上 >>>。在这种情况下,用户似乎只能根据上下文进行推断。

有趣的是,以下纯 Python 代码会产生相同的结果:

with open('examples/ex1.csv') as f:
    for line in f:
        print(line)

with open('examples/ex1.csv') as f:
    print(f.read())

【讨论】:

    【解决方案2】:

    !type+path 用于读取已存在的数据,而不是将数据写入文件。

    以下内容是您从 CSV 文件中读取的内容,请勿输入。

    a,b,c,d,消息 1,2,3,4,你好 5,6,7,8,世界 9,10,11,12,foo

    您可以从 GitHub 下载这些 csv 文件

    【讨论】:

      【解决方案3】:

      如果你有更新的 jupyter 版本,你可以使用 %pycat。它会将结果显示为浏览器中的页脚窗口,虽然不理想,但至少您可以看到结果。

      【讨论】:

        【解决方案4】:

        我最近读完了 Wes McKinney 的 Python for Data Analysis 第 6 章。 Wes 将!type examples/ex1.csv 用于Unix 环境。

        对于 Windows,忽略 Unix 代码,而是使用 pd.read_csv('examples/ex1.csv') 读取 csv 文件。

        您可以创建自己的ex1.csv 文件或在 Wes 的GitHub 页面上下载本书的支持文件。

        【讨论】:

          【解决方案5】:

          我们读的是同一本书。我现在已经开始第 6 章了。

          你收到的这个错误,我用下面的语法解决了:

          !type examples\ex1.csv
          

          注意反斜杠。

          【讨论】:

          • 这似乎与 "NameError: name 'a' is not defined." 无关。
          • 不是,但它确实回答了这个问题。 (不过,即使 Windows 也可以在路径中使用正斜杠,因此无需切换到反斜杠。)
          猜你喜欢
          • 1970-01-01
          • 2011-07-19
          • 2016-11-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多