2012-04-05 131 views
1
final="cacls " + "E:/" + "\"" + list1[2] + " " + list1[3] + "\"" + " /p " + str 
os.system(final) 

我想設置權限使用Python中的文件夾,但在運行此命令時,用戶輸入需要提供過於即Python代碼通過命令行發送命令

它會詢問ARE YOU SURE(Y/N)和用戶需要輸入「Y」或「N」

是否有任何方式使用python發送用戶輸入「Y」以及上述代碼?

pro = subprocess.Popen(final,shell=True, stdin=subprocess.PIPE) 
    pro.communicate(bytes("Y\r\n",'utf-8')) 

我已添加以下代碼。程序退出但未設置權限。

http://jimmyg.org/blog/2009/working-with-python-subprocess.html#writing-to-standard-input

+0

Aparté酒店:這不是PHP或Javascript - Python可以讀取連接的可讀方式寧弦,他們好多了。例如,嘗試:'final =「cacls%s \」%s%s \「/ p%s」%(「E:/」,list1 [2],list1 [3],str) – jsbueno 2012-04-05 13:03:19

+0

謝謝,我會這樣做:) – 2012-04-06 03:56:45

回答

3

嘗試使用子模塊

import subprocess 
cmd = ["cacls", "E:/" + list1[2], list1[3], "/p", str] 

pro = subprocess.Popen(final, stdin=subprocess.PIPE) 
pro.communicate("y\r\n") 
+0

嗨jakob,我試過你的解決方案,該程序永遠不會退出,權限未設置 – 2012-04-05 12:20:31

+1

嘗試編輯版本。 – 2012-04-05 12:22:05

+0

相同的輸出,這次我可以看到正在執行的cacls.exe。該程序不退出。 – 2012-04-05 12:24:08

-1

作爲一個聰明的程序員,使用PBS

然後,代碼爲:

從你的問題
from pbs import type as echo# Isn't it echo for Windows? If not, use the correct one 

script = Command("/path/to/cacls ") 
print script(echo("Y"), ("E:/" + "\"" + list1[2] + " " + list1[3] + "\"" + " /p " + str).split())