学习啦>学习电脑>电脑安全>系统安全>

Python怎么调用系统命令

黎正分享

  Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法,下面就让学习啦小编教大家Python怎么调用系统命令。

  Python调用系统命令的方法

  1、os.system(command)

  os.system()函数用来运行shell命令。此命令可以方便的调用或执行其他脚本和命令

  #打开指定的文件 >>>os.system('notepad *.txt')

  这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。返回值是依赖于系统的,直接返回系统的调用返回值,所以windows和Linux是不一样的。

  2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)

  若置syn为wx.EXEC_ASYNC则wx.Excute函数立即返回,若syn=wx.EXEC_SYNC则等待调用的程序结束后再返回。

  callback是一个wx.Process变量,如果callback不为None且syn=wx.EXEC_ASYNC,则程序结束后将调用wx.Process.OnTerminate()函数。

  os.system()和wx.Execute()都利用系统的shell,执行时会出现shell窗口。如在Windows下会弹出控制台窗口,不美观。下面的两种方法则没有这个缺点。

  3、import subprocess

  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)

  subprocess.call(["cmd", "arg1", "arg2"],shell=True)

  Note:

  1. 参数args可以是字符串或者序列类型(如:list,元组),用于指定进程的可执行文件及其参数。

  2. 如果command(args)不是一个可执行文件,shell=True不可省。否则如copy\del命令可能会出现FileNotFoundError错误。

  3. Popen.wait()可以得到命令的返回值

  4. 如果是windows下的命令,则文件路径如果用的是linux格式会报错:The syntax of the command is incorrect.

  举个栗子

  if subprocess.Popen('dir /b %s' % filename, shell=True).wait() == 0

  如果filename字符串中有空格,则会出现错误:File Not Found错误

  可以通过下面["cmd", "arg1", "arg2"]两种方式

  if subprocess.Popen(["dir", "/b", filename], shell=True).wait() == 0

  if subprocess.call(["dir", "/b", filename], shell=True) == 0

  [Python中subprocess学习]

  4、webbrowser.open(url)

  前面三个方法只能用于执行程序和打开文件,不能处理URL,打开URL地址可用webbrowser模块提供的功能。

  调用系统缺省浏览器打开URL地址,如 webbrowser.open('http://www.jb51.NET'),也可以利用

  webbrowser.open('h:\python.zip')来执行程序。这样可以不必区分是文件名还是URL,不知道在Linux下是否可行。

  以上在Windows2000,Python2.4a1,wxPython 2.5.1运行。

  [python调用shell的方法]

  5. os.popen(command[,mode[,bufsize]])

  举个栗子

  >>> import os

  >>> p = os.popen("dir c:", 'r')

  >>> p.read()

  bla bla... <这里是dir正确的输出>

  >>> p.close()

  >>> p = os.popen("dir d:", 'r') # 电脑中没有D盘

  >>> p.read()

  ''

  >>> p.close()

  1

  >>>

  可以看出,popen方法通过p.read()获取终端输出,而且popen需要关闭close().当执行成功时,close()不返回任何值,失败时,close()返回系统返回值. 可见它获取返回值的方式和os.system不同。

  6. 使用commands模块

  举个栗子

  >>> import commands

  >>> commands.getstatusoutput('ls /bin/ls')

  (0, '/bin/ls')

  >>> commands.getstatusoutput('cat /bin/junk')

  (256, 'cat: /bin/junk: No such file or directory')

  >>> commands.getstatusoutput('/bin/junk')

  (256, 'sh: /bin/junk: not found')

  >>> commands.getoutput('ls /bin/ls')

  '/bin/ls'

  >>> commands.getstatus('/bin/ls')

  '-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

  根据你需要的不同,commands模块有三个方法可供选择。getstatusoutput, getoutput, getstatus。

Python怎么调用系统命令相关文章:

1.Linux系统常用命令合集

2.unix和linux密码丢失怎么办

3.android重要知识点总结

4.python版本低怎么升级

5.Linux命令行中网速怎么测试

    1753473