我是Python中的新手。我已經寫了一個腳本,用於在Ubuntu中查找某些文件,這需要訪問sudo,腳本未能顯示所需的輸出。這裏是我的腳本:在Python中插入Sudo密碼
import subprocess
command_1 = "echo password".split()
command_2 = "sudo -S find/-iname 'vlc.png'".split()
file_open = open("find.log", "w")
comm_1 = subprocess.Popen(command_1, stdout=subprocess.PIPE)
subprocess.Popen(command_2, stdin=comm_1.stdout, stdout=file_open)
該腳本,直到倒數第二行,因爲它顯示在標準輸出密碼。我猜測問題可能在最後一行。我已經嘗試了SE的其他解決方案,但沒有一個解決方案適用於我,除非使用shell = True,我不願意使用它。
我知道把密碼設置成純文本是一個非常糟糕的主意,但是當我學習時我只需要知道爲什麼我的代碼不工作。
編輯:
import subprocess
command_1 = "echo password".split()
command_2 = "sudo -S find/-iname 'vlc.png'".split()
file_open = open("find.log", "w")
print subprocess.Popen(command_1, stdout=subprocess.PIPE).communicate()[0]
輸出:密碼
無法重現。它不會輸出'password',而是'sudo:1不正確的密碼嘗試'。 –
@Rawing:請檢查我的編輯。倒數第二個命令的標準輸出是密碼。 – heemayl
如果使用'shell = False',你不應該在'vlc.png'附近引用引號。我懷疑這是你真正的問題,而整個'sudo'事業是一個紅鯡魚。 – tripleee