Python使用类型代替cat

时间:2018-07-12 04:03:58

标签: python jupyter-notebook

我目前正在研究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:未定义名称'a'。”

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

5 个答案:

答案 0 :(得分:2)

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

在最简单的用法中,windows type和Unix cat命令将在自变量中命名的文件的内容输出到标准输出。

前缀!告诉IPython / Jupyter将行的其余部分发送到系统外壳,而不是Python解释器。

通常,当显示带有输入和输出的整个会话时,将给出关于哪些行是输入而哪些行是输出的某种指示。 IPython会话通常以In[1]:作为输入的前缀,以Out[1]:作为输出的前缀。普通的Python会话通常以>>>作为输入的前缀。在这种情况下,用户似乎只能根据上下文进行推断。

有趣的是,以下纯Python代码将具有相同的结果:

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

OR

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

答案 1 :(得分:0)

我们正在读同一本书。我现在已经开始了第六章。

您收到此错误,我使用以下语法解决了该问题:

!type examples\ex1.csv

注意反斜杠。

希望这会有所帮助。

答案 2 :(得分:0)

!type + path用于读取现有数据,而不是将数据写入文件。

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

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

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

答案 3 :(得分:0)

我最近阅读了Wes McKinney的《 Python for Data Analysis》第6章。我们在Unix环境中使用了!type examples/ex1.csv

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

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

答案 4 :(得分:-1)

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