首页 > 解决方案 > 使用 type 代替 cat

问题描述

我目前正在阅读 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。

标签: pythonjupyter-notebook

解决方案


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

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

前缀!告诉 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())

推荐阅读