2012-06-06 21 views

回答

2

使用標準庫subprocess

import subprocess 
passwd='mypassword' 
subprocess.call('echo %s|sudo -S vbetool dpms off' % passwd, shell=True) 
+0

但它要求輸入sudo密碼。我需要運行這個代碼沒有密碼。如果它像那樣工作,那對我來說非常有用。請爲我提供解決方案 – Viswa

+0

它似乎複製到http://stackoverflow.com/questions/5191878/change-to-sudo-user-within-a-python-script – iMom0

+0

千謝謝。它的工作正常 – Viswa

0

使用sudo -S它用於從標準輸入,而不是terminal.Store它在一個文件中讀取密碼,說passwd文件,然後執行:

import os 
os.system("sudo -S vbetool dpms off < passwd") 
+0

stdin位於何處。我想你說我需要在該文件中提供密碼。 – Viswa

+0

密碼必須保存在一個文件中,根據我的回答它是'passwd'。 – rjv

0

或者

您可以使用pexpect庫,它通常用於自動執行需要用戶輸入的程序。

import pexpect 

child = pexpect.spawn('sudo vbetool dpms off') 
child.expect('Password:') 
child.sendline(password) 
child.expect(pexpect.EOF, timeout=None) 
output_data = child.before 

在這裏,您只需提供您期待的匹配提示,然後發送密碼。之後,您可以收集輸出並處理它。

這是更通用的,當你有不接受密碼管道的程序時很有用。

可以安裝該模塊與

easy_install pexpect 
or 
pip install pexpect 
+0

@Viswa:檢查此解決方案是否適合您。 – pyfunc