2024-05-17 06:33:32 发布
网友
嗨,我现在有一个小问题,但问题仍然存在。当我的python脚本通过gksudo运行时,它似乎执行得不正常。第一个if块中的系统命令在之前执行
print ("Removing Partial, Unneeded, And Obsolete Packages...");
那条线。在
以下是我剧本的其余部分:
请帮助A.S.A.p。, 布鲁克斯·雷迪。在
虽然这只是一个猜测,但我希望您看到的是I/O buffering的结果。如果这是在python3.3或更高版本中,请尝试^{}。在Python2中,您需要调用^{}-但只有在stdout未被确定为终端时才会发生;例如,如果由cron运行,或者通过管道传输到另一个程序。要演示此问题,请运行脚本:
import time, sys print "hello there" #sys.stdout.flush() time.sleep(2) print "bye"
如果使用python script运行,它可以正常工作,但如果以python script | dd bs=1运行,则在两秒钟后,两条打印线都出现之前,不会显示任何内容。删除#,这样刷新就可以解决这个问题。在
python script
python script | dd bs=1
#
这种I/O缓冲的原因是收集大量的小打印,减少了对外部I/O的调用次数。这很少有明显的区别,但最终会有影响,例如,对于磨损的内存或具有固定块大小的I/O设备。我用来显示差异的dd命令使用可配置参数进行缓冲,在本例中是1个字节。在
dd
顺便说一句,脚本中的所有分号都是不必要的。在
虽然这只是一个猜测,但我希望您看到的是I/O buffering的结果。如果这是在python3.3或更高版本中,请尝试^{} 。在Python2中,您需要调用^{} -但只有在stdout未被确定为终端时才会发生;例如,如果由cron运行,或者通过管道传输到另一个程序。要演示此问题,请运行脚本:
如果使用
python script
运行,它可以正常工作,但如果以python script | dd bs=1
运行,则在两秒钟后,两条打印线都出现之前,不会显示任何内容。删除#
,这样刷新就可以解决这个问题。在这种I/O缓冲的原因是收集大量的小打印,减少了对外部I/O的调用次数。这很少有明显的区别,但最终会有影响,例如,对于磨损的内存或具有固定块大小的I/O设备。我用来显示差异的
dd
命令使用可配置参数进行缓冲,在本例中是1个字节。在顺便说一句,脚本中的所有分号都是不必要的。在
相关问题 更多 >
编程相关推荐