python os.system调用别的系统程序总出现一闪而过的黑框解决办法

python os.system调用别的系统程序总出现一闪而过的黑框解决办法

今天打包了py程序,运行的时候发现老是有个黑框一闪而过。经过多次尝试发现是os.system的问题,调用这个函数会调用cmd,所有会出现短暂的黑框显示。

解决办法1:换用os.popen。如os.system(‘reboot now’) 换成 os.popen(‘reboot now’)。

os.popen() 方法用于从一个命令打开一个管道。
在Unix,Windows中有效。

该命令格式:os.popen(command[, mode[, bufsize]])

command – 使用的命令。

mode – 模式权限可以是 ‘r’(默认) 或 ‘w’。

bufsize – 指明了文件需要的缓冲大小:0意味着无缓冲;1意味着行缓冲;其它正值表示使用参数大小的缓冲(大概值,以字节为单位)。负的bufsize意味着使用系统的默认值,一般来说,对于tty设备,它是行缓冲;对于其它文件,它是全缓冲。如果没有改参数,使用系统的默认值。

返回值:返回一个文件描述符号为fd的打开的文件对象。

方法2:使用subprocess调用Popen
例子:subprocess.Popen(‘reboot now’,shell=True)
第二个参数必须是True

subprocess模块定义了一个类: Popen
class subprocess.Popen( args,
bufsize=0,
executable=None,
stdin=None,
stdout=None,
stderr=None,
preexec_fn=None,
close_fds=False,
shell=False,
cwd=None,
env=None,
universal_newlines=False,
startupinfo=None,
creationflags=0)

参数解析:
python os.system调用别的系统程序总出现一闪而过的黑框解决办法_第1张图片
如果把shell设置成True,指定的命令会在shell里解释执行。在win下就不会调用cmd。所以就不会出现那个一闪而过的黑框。

你可能感兴趣的:(python,开发语言,linux)