python - 使用 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。
解决方案
命令是!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())