gksudo和python脚本

gksudo和python脚本,python,gksudo,Python,Gksudo,嗨,我现在有个小问题,但还是有个问题。当我的python脚本通过gksudo运行时,它似乎执行不正常。第一个if块中的系统命令在之前执行 print ("Removing Partial, Unneeded, And Obsolete Packages..."); 那条线 以下是我的脚本的其余部分: #!/usr/bin/env python import os; F1 = open('/tmp/F1.txt', 'r').read(); F2 = open('/tmp/F2.txt',

嗨,我现在有个小问题,但还是有个问题。当我的python脚本通过gksudo运行时,它似乎执行不正常。第一个if块中的系统命令在之前执行

print ("Removing Partial, Unneeded, And Obsolete Packages...");
那条线

以下是我的脚本的其余部分:

#!/usr/bin/env python

import os;

F1 = open('/tmp/F1.txt', 'r').read();
F2 = open('/tmp/F2.txt', 'r').read();
F3 = open('/tmp/F3.txt', 'r').read();
F4 = open('/tmp/F4.txt', 'r').read();
F5 = open('/tmp/F5.txt', 'r').read();
os.system("rm /tmp/F1.txt");
os.system("rm /tmp/F2.txt");
os.system("rm /tmp/F3.txt");
os.system("rm /tmp/F4.txt");
os.system("rm /tmp/F5.txt");


if F1=="1":
    print ("Removing Partial, Unneeded, And Obsolete Packages...");
    os.system ("sudo apt-get clean -y -f");
    os.system ("sudo apt-get autoremove -y -f");
    os.system ("sudo apt-get autoclean -y -f");
    open('/tmp/Point.txt', 'w').write("2");
    print ("...Done");

if F2=="1":
    print ("Clearing Temporary Files...");
    os.system ("sudo rm -rf /tmp/*");
    open('/tmp/Point.txt', 'w').write("3");
    print ("...Done");

if F3=="1":
    print ("Clearing Unused Thumbnails...");
    os.system ("rm -f ~/.thumbnails/normal/*");
    open('/tmp/Point.txt', 'w').write("4");
    print ("...Done");

if F4=="1":
    print ("Clearing Downloads Folder...");
    os.system ("rm -r ~/Downloads/*");
    open('/tmp/Point.txt', 'w').write("5");
    print ("...Done");

if F5=="1":
    print ("Emptying Trash...");
    os.system ("rm -rf ~/.local/share/Trash/*");
    open('/tmp/Point.txt', 'w').write("6");
    print ("...Done");

print ("");
os.system("rm /tmp/Point.txt"); 
print ("Cleanup Complete.");
请帮助A.S.A.p。,
布鲁克斯·雷迪。

虽然这只是一个猜测,但我想你看到的是一个猜测的结果。如果是在Python3.3或更高版本中,请尝试。在Python2中,您需要调用—但只有在stdout未被确定为终端时才会发生;例如,如果由cron运行,或通过管道传输到另一个程序。要演示此问题,请运行脚本:

import time, sys

print "hello there"
#sys.stdout.flush()
time.sleep(2)
print "bye"
如果使用
python脚本运行
,效果很好,但是如果使用
python脚本运行| dd bs=1
则在两秒钟过去之前不会显示任何内容,此时两条打印行都会出现。删除
#
,以便进行刷新,修复了此问题

这种I/O缓冲的原因是收集大量的小打印,减少对外部I/O的调用次数。这很少有明显的区别,但最终会有影响,例如,对于磨损的内存或具有固定块大小的I/O设备。我用来显示差异的
dd
命令使用可配置参数进行缓冲,在本例中为1字节


顺便说一句,脚本中的所有分号都是不必要的

我原以为这会有帮助,但不幸的是我的问题仍然存在。有什么想法吗?