我已经开始使用IPython笔记本了,我很享受.有时,我会编写需要大量内存或无限循环的错误代码.我发现"中断内核"选项缓慢或不可靠,有时我必须重新启动内核,丢失内存中的所有内容.
我有时也会写脚本导致OS X耗尽内存,我必须重新启动.我不是百分百肯定,但是当我之前写过这样的bug并在终端中运行Python时,我通常可以CTRL+ C我的脚本.
我在Mac OS X上使用Anaconda分发的IPython笔记本和Firefox.
我有一个我想在IPython中运行的Python脚本.我想将输出重定向(写入)到文件,类似于:
python my_script.py > my_output.txt
Run Code Online (Sandbox Code Playgroud)
当我在IPython中运行脚本时,我该怎么做呢,比如说 execfile('my_script.py')
有一个较旧的页面描述了可以编写的函数来执行此操作,但我相信现在有一种内置的方法来执行此操作,我找不到.
我是bash脚本的新手.我似乎无法获得我的计数变量的正确值,以便while
在我的bash脚本的循环结束时显示.
背景:我有一个相当简单的任务:我想将包含文件路径列表的文本文件传递给bash脚本,让它检查这些文件是否存在,并计算现有/丢失文件的数量.除了计数部分外,我得到了大部分脚本.
N=0
correct=0
incorrect=0
cat $1 | while read filename ; do
N=$((N+1))
echo "$N"
if ! [ -f $filename ]; then
incorrect=$((incorrect+1))
else
correct=$((correct+1))
fi
done
echo "# of Correct Paths: $correct"
echo "# of Incorrect Paths: $incorrect"
echo "Total # of Files: $N"
Run Code Online (Sandbox Code Playgroud)
如果我有一个包含5个文件的列表,其中4个存在,我希望得到以下输出(注意循环中的echo
命令while
):
1
2
3
4
5
# of Correct Paths: 4
# of Incorrect Paths: 1
Total # of Files: 5
Run Code Online (Sandbox Code Playgroud)
相反,我得到:
1
2
3
4
5
# …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用scipy.io将文本字符串列表从Python导出到MATLAB.我想使用scipy.io,因为我想要的.mat文件应该包括数值矩阵(我在这里学到了)和文本单元格数组.
我试过了:
import scipy.io
my_list = ['abc', 'def', 'ghi']
scipy.io.savemat('test.mat', mdict={'my_list': my_list})
Run Code Online (Sandbox Code Playgroud)
在MATLAB中,我加载test.mat并获取一个字符数组:
my_list =
adg
beh
cfi
Run Code Online (Sandbox Code Playgroud)
如何让scipy.io将列表导出到MATLAB单元格数组中?
是否有任何优雅的方法来利用正确的间距特征print numpy.array
来获得具有适当标签的2D阵列?例如,给定一个包含4行和5列的数组,如何提供与行和标题列对应的数组和适当大小的列表,以生成一些看起来像这样的输出?
A B C D E
Z [[ 85 86 87 88 89]
Y [ 90 191 192 93 94]
X [ 95 96 97 98 99]
W [100 101 102 103 104]]
Run Code Online (Sandbox Code Playgroud)
如果我天真地尝试:
import numpy
x = numpy.array([[85, 86, 87, 88, 89], \
[90, 191, 192, 93, 94], \
[95, 96, 97, 98, 99], \
[100,101,102,103,104]])
row_labels = ['Z', 'Y', 'X', 'W']
print " A B C D E"
for row, row_index in enumerate(x):
print row_labels[row_index], …
Run Code Online (Sandbox Code Playgroud) 我使用逗号/制表符分隔的数据文件,通常可能如下所示:
key1,1,2.02,hello,4
key2,3,4.01,goodbye,6
...
Run Code Online (Sandbox Code Playgroud)
我可以在Python中阅读并预处理这个列表,如下所示:
[ [ key1, 1, 2.02, 'hello', 4 ], [ key2, 3, 4.01, 'goodbye', 6 ] ]
Run Code Online (Sandbox Code Playgroud)
有时,我喜欢将这个列表列表保存为pickle,因为它保留了不同类型的条目.但是,如果pickle文件很大,那么以流式方式读回这个列表列表会很棒.
在Python中,要将文本文件作为流加载,我使用follwoing打印出每一行:
with open( 'big_text_file.txt' ) as f:
for line in f:
print line
Run Code Online (Sandbox Code Playgroud)
我可以为Python列表做类似的事情,即:
import pickle
with open( 'big_pickled_list.pkl' ) as p:
for entry in pickle.load_streaming( p ): # note: pickle.load_streaming doesn't exist
print entry
Run Code Online (Sandbox Code Playgroud)
有没有像"load_streaming"这样的泡菜功能?
我正在编写一个带有 GUI 的多线程 Python 程序,其中有几个模块可以通过更改文本和背景颜色来“触摸”GUI。我目前正在使用 PyGTK,发现 GUI 有时会“无提示”崩溃(没有错误消息;程序只是终止),有时会遇到分段错误。
该站点指出 GTK 并非完全线程安全,并且 PyGTK 多线程编程很棘手。是否有更好的 Python GUI 框架用于多线程程序且不太可能产生问题?
过去很容易从iPhone上名为consolidated.db的文件中获取历史位置数据(例如,参见http://petewarden.github.com/iPhoneTracker/).但是,在新的iOS系统上这更难.不过,您的数据是否仍在手机上的某个位置,是否可以访问它?
为了清楚起见,我不打算使用位置API; 相反,我希望我的历史位置数据作为我的设备的最终用户.有没有可以为我这样做的脚本/应用程序?
我正在运行Mac OS X 10.8并且对time.clock()有一些奇怪的行为,一些在线消息来源说我应该更喜欢time.time()来为我的代码计时.例如:
import time
t0clock = time.clock()
t0time = time.time()
time.sleep(5)
t1clock = time.clock()
t1time = time.time()
print t1clock - t0clock
print t1time - t0time
0.00330099999999 <-- from time.clock(), clearly incorrect
5.00392889977 <-- from time.time(), correct
Run Code Online (Sandbox Code Playgroud)
为什么会这样?我应该使用time.time()进行可靠的估算吗?
这两个代码片段的速度有很大差异吗?
1.
x = set( i for i in data )
Run Code Online (Sandbox Code Playgroud)
与:
2.
x = set( [ i for i in data ] )
Run Code Online (Sandbox Code Playgroud)
我见过人们推荐set()
而不是set([])
; 这只是风格问题吗?
我有一个脚本从文件中读取行,获取每行的第一列,并附加到名为该行的文件(我正在尝试编写许多不同的文件,名为$ id.txt).
是否有可能有一个比这更快的脚本(在单节点机器上)?请注意,我使用read -r
并且id="$(echo $line | awk '{print $1}')"
因为我有以制表符分隔的字段,并且在某些字段中存在某些字符,例如我希望保留的字符串.
while read -r line
do
id="$(echo $line | awk '{print $1}')"
echo "$line" >> $id.txt
done < $1
Run Code Online (Sandbox Code Playgroud)
我输入的一些特征:
$id.txt
文件不是那么大,通常平均几百行,最多几千行Run Code Online (Sandbox Code Playgroud)abc ... abc ... def ... def ... def ... def ... ghi ... ghi ...