1. os.system()
這個方法直接調用標准C的system()函數,僅僅在一個子終端運行系統命令,而不能獲取執行返回的信息。
2. os.popen()
這個方法執行命令並返回執行後的信息對象,是通過一個管道文件將結果返回。
3. commands模塊
注意1:在類unix的系統下使用此方法返回的返回值(status)與腳本或命令執行之後的返回值不等,這是因為調用了os.wait()的緣故,具體原因就得去了解下系統wait()的實現了。需要正確的返回值(status),只需要對返回值進行右移8位操作就可以了。
注意2:當執行命令的參數或者返回中包含了中文文字,那麼建議使用subprocess。
4. subprocess模塊
該模塊是一個功能強大的子進程管理模塊,是替換os.system, os.spawn*等方法的一個模塊。
Ⅱ Python怎麼調用系統命令
每種語言都有自己的優勢,互相結合起來各取所長程序執行起來效率更高或者說哪種實現方式較簡單就用哪個,nodejs是利用子進程來調用系統命令或者文件,文檔見nodejs.org/api/child_process.html,NodeJS子進程提供了與系統交互的重要介面,其主要API有: 標准輸入、標准輸出及標准錯誤輸出的介面。 NodeJS 子進程提供了與系統交互的重要介面,其主要 API 有: 標准輸入、標准輸出及標准錯誤輸出的介面 child.stdin 獲取標准輸入 child.stdout 獲取標准輸出 child.stderr 獲取標准錯誤輸出 獲取子進程的PID:child.pid 提供生成子進程的方法:child_process.spawn(cmd, args=[], [options]) 提供直接執行系統命令的方法:child_process.exec(cmd, [options], callback) 提供調用腳本文件的方法:child_process.execFile(file, [args], [options], [callback]) 提供殺死進程的方法:child.kill(signal='SIGTERM') 用實例來感受一下,很有意思的,呵呵~~ 1、利用子進程調用系統命令(獲取系統內存使用情況) 新建nodejs文件,名為cmd_spawn.js,代碼如下: 復制代碼 代碼如下: var spawn = require('child_process').spawn; free = spawn('free', ['-m']); // 捕獲標准輸出並將其列印到控制台 free.stdout.on('data', function (data) { console.log('standard output:\n' + data); }); // 捕獲標准錯誤輸出並將其列印到控制台 free.stderr.on('data', function (data) { console.log('standard error output:\n' + data); }); // 注冊子進程關閉事件 free.on('exit', function (code, signal) { console.log('child process eixt ,exit:' + code); });
Ⅲ Python中調用命令行的幾種方法
1.直接用python f:/python/xxx.py這樣來運行
2.用開發工具,如樓上說的eclipse+pydev,還有editplus,VIM這些都可以設置的。
Ⅳ python開發命令行腳本
工作中會經常需要寫一些命令行腳本,如果還是用if,else判斷用戶輸入實在是太醜陋了。這里介紹幾個python里的命令行腳本庫,可以幫助我們快速開發好用的命令行腳本。
https://docs.python.org/3/library/cmd.html
使用方式是繼承Cmd,實現自己的子類。
參數comletekey是自動補全操作,默認值是Tab, 如果不為None 且readline可用的話,命令會自動完成。
這里的readline指的是python實現的 GNU readline 介面(標准python庫里沒有,Windows系統不支持)。
參數stdin,stdout是輸入輸出流,默認是sys.stdin,sys.stout。
cmd提供了一個簡單的框架,但是功能比較簡單,python還有其他的很多第三方庫可以用來寫命令行程序。
https://www.cnblogs.com/xueweihan/p/12293402.html 這篇文章對比了各個庫的功能,貼在這里:
看起來fire是最簡單的,來試一下。
fire 則是用一種面向廣義對象的方式來玩轉命令行,這種對象可以是類、函數、字典、列表等,它更加靈活,也更加簡單。你都不需要定義參數類型,fire 會根據輸入和參數默認值來自動判斷,這無疑進一步簡化了實現過程。
以下示例為 fire 實現的 計算器程序:
從上述示例可以看出,fire 提供的方式無疑是最簡單、並且最 Pythonic 的了。我們只需關注業務邏輯,而命令行參數的定義則和函數參數的定義融為了一體。
不過,有利自然也有弊,比如 nums 並沒有說是什麼類型,也就意味著輸入字元串'abc'也是合法的,這就意味著一個嚴格的命令行程序必須在自己的業務邏輯中來對期望的類型進行約束。
Ⅳ python 怎麼調用命令實現
在Python/wxPython環境下,執行外部命令或者說在Python程序中啟動另一個程序的方法
1、os.system(command)
os.system()函數用來運行shell命令。此命令可以方便的調用或執行其他腳本和命令
#打開指定的文件 >>>os.system('notepad *.txt')
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)
Ⅵ 如何用python調用系統命令
每種語言都有自己的優勢,互相結合起來各取所長程序執行起來效率更高或者說哪種實現方式較簡單就用哪個,nodejs是利用子進程來調用系統命令或者文件,文檔見nodejs.org/api/child_process.html,NodeJS子進程提供了與系統交互的重要介面,其主要API有: 標准輸入、標准輸出及標准錯誤輸出的介面。 NodeJS 子進程提供了與系統交互的重要介面,其主要 API 有: 標准輸入、標准輸出及標准錯誤輸出的介面 child.stdin 獲取標准輸入 child.stdout 獲取標准輸出 child.stderr 獲取標准錯誤輸出 獲取子進程的PID:child.pid 提供生成子進程的方法:child_process.spawn(cmd, args=[], [options]) 提供直接執行系統命令的方法:child_process.exec(cmd, [options], callback) 提供調用腳本文件的方法:child_process.execFile(file, [args], [options], [callback]) 提供殺死進程的方法:child.kill(signal='SIGTERM') 用實例來感受一下,很有意思的,呵呵~~ 1、利用子進程調用系統命令(獲取系統內存使用情況) 新建nodejs文件,名為cmd_spawn.js,代碼如下: 復制代碼 代碼如下: var spawn = require('child_process').spawn; free = spawn('free', ['-m']); // 捕獲標准輸出並將其列印到控制台 free.stdout.on('data', function (data) { console.log('standard output:\n' + data); }); // 捕獲標准錯誤輸出並將其列印到控制台 free.stderr.on('data', function (data) { console.log('standard error output:\n' + data); }); // 注冊子進程關閉事件 free.on('exit', function (code, signal) { console.log('child process eixt ,exit:' + code); });
Ⅶ python等腳本語言如何實現系統調用
開始菜單-->運行-->輸入cmd 打開命令行
輸入python -V,會顯示你python的版本,如果有顯示,就可以使用了。你寫了一個腳本script.py
那就用命令行在那個文件夾下運行python script.py 就可以了
如果輸入python -V提示說找不到或者錯誤,那麼就要添加環境變數。右鍵點擊我的電腦-->高級-->環境變數-->path ,那個欄裡面添加分號,然後是你python的安裝路徑,如果按在C:\python27,那就把這個路徑添進去,然後再安裝上面說的運行命令行。
Ⅷ 怎麼在命令行窗口運行python -V
在命令行運行python -V的步驟如下:
1、在win10系統上使用組合鍵WIN + R ,啟動運行窗口,在運行窗口中輸入cmd ,點擊確定按鈕
2、啟動一個cmd命令行窗口
3、在cmd命令行窗口中輸入python -V,有下圖所示的回顯,說明python3的環境已經安裝到電腦上了,可以運行python腳本。
python -V的功能如下:
python -V (大寫)與 python --version 功能相同,是將 python 版本列印並退出 python。
Ⅸ python執行這樣一條windows系統命令怎麼不行
這種情況是使用的方法不正確導致的。
Python中執行系統命令常見的幾種方法如下:
1、os.system
例如:
>>> import os >>> os.system('ls') chk_err_log.py CmdTool.log install_log.txt install_zabbix.sh manage_deploy.sh MegaSAS.log
2、os.popen
例如:
>>> import os >>>tmp = os.popen('ls *.sh').readlines() >>>tmp ['install_zabbix.sh\n', 'manage_deploy.sh\n', 'mysql_setup.sh\n', 'python_manage_deploy.sh\n', 'setup.sh\n']
3、使用模塊subprocess
使用方法:
>>> import subprocess >>> subprocess.call (["cmd", "arg1", "arg2"],shell=True)
import subprocess p = subprocess.Popen('ls *.sh', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) print p.stdout.readlines() for line in p.stdout.readlines(): print line, retval = p.wait()
4、 使用模塊commands模塊
使用方法:
>>> import commands >>> commands.getoutput('ls *.sh') 'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh' >>> commands.getstatusoutput('ls *.sh') (0, 'install_zabbix.sh\nmanage_deploy.sh\nmysql_setup.sh\npython_manage_deploy.sh\nsetup.sh')
注意:當執行命令的參數或者返回中包含了中文文字,那麼建議使用subprocess,如果使用os.popen則會出現錯誤。