我目前正在研究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。
答案 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。它将结果显示为浏览器中的页脚窗口,虽然不理想,但至少可以看到结果。