我发现自己经常使用Python的解释器来处理数据库,文件等 - 基本上是大量的半结构化数据的手动格式化.我没有像我希望的那样经常保存和清理有用的位.有没有办法将我的输入保存到shell中(数据库连接,变量赋值,少量循环和逻辑位) - 交互式会话的一些历史记录?如果我使用像script我得到太多stdout噪音的东西.我真的不需要腌制所有对象 - 但如果有一个解决方案可以做到这一点,那就没关系.理想情况下,我只剩下一个脚本,它以我交互式创建的脚本运行,我可以删除我不需要的位.有没有这样做的包,或DIY方法?
更新:我对这些包的质量和实用性感到非常惊讶.对于那些有类似痒的人:
我被转换了,这些真正填补了翻译和编辑之间的需要.
在matlab或插件/应用程序或技巧中是否有选项,如果您处于交互式命令会话中,每次打印出一个太大而无法让人看的矩阵,它会将输出编辑为警告矩阵有多大或矩阵的汇总(只有几行和几列)?
有很多次我想在命令窗口中检查一个矩阵,但我没有意识到它有多大,所以我不小心将整个事情打印出来.或者在函数内部的某些地方,我没有自己编码,有人错过了分号,我把它交给了一个大矩阵,它将整个东西转储到我的命令窗口.
有意义的是,在99.99%的时间里,人们不打算在交互式命令窗口中打印一百万行矩阵,对吧?它完全阻止了它们的滚动缓冲区,并删除了之前在屏幕上显示的所有有用信息.
因此,matlab更自然地假设交互式会话中的用户想要输出大矩阵的摘要,而不是将整个事物转储到命令窗口中.在设置中至少应该有这样的选项.
在我的IPython进口tensorflow as tf和numpy as np创造的TensorFlow InteractiveSession.当我使用numpy输入运行或初始化一些正常分布时,一切运行正常:
some_test = tf.constant(np.random.normal(loc=0.0, scale=1.0, size=(2, 2)))
session.run(some_test)
Run Code Online (Sandbox Code Playgroud)
返回:
array([[-0.04152317, 0.19786302],
[-0.68232622, -0.23439092]])
Run Code Online (Sandbox Code Playgroud)
正如预期的那样.
...但是当我使用Tensorflow正态分布函数时:
some_test = tf.constant(tf.random_normal([2, 2], mean=0.0, stddev=1.0, dtype=tf.float32))
session.run(some_test)
Run Code Online (Sandbox Code Playgroud)
...它引发了一个类型错误说:
(...)
TypeError: List of Tensors when single Tensor expected
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么?
输出:
sess.run(tf.random_normal([2, 2], mean=0.0, stddev=1.0, dtype=tf.float32))
Run Code Online (Sandbox Code Playgroud)
单独返回np.random.normal生成的完全相同的东西- >一个形状矩阵,(2, 2)其值取自正态分布.
到目前为止,是否有一种快速,方便的方法可以将所有代码输入到python解释器中?例如,如果我在解释器中输入:
Steven$ python
Python 2.7.5 (default, Mar 9 2014, 22:15:05)
[GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print "hi"
hi
>>> a = [1,2,3]
>>> for e in a:
... print e
...
1
2
3
>>> print "bye"
bye
>>>
Run Code Online (Sandbox Code Playgroud)
我想得到这些线:
print "hi"
a = [1,2,3]
for e in a:
print e
print "bye"
Run Code Online (Sandbox Code Playgroud)