我有一個關於pythonw的問題。我正在製作一個應該在後臺執行的程序。當它啓動時,它應該發送計算機名,用戶名和檢查結果以查看該程序是否具有管理權限。以下是有關部分客戶端代碼:Python pythonw子進程check_output不工作
computername = subprocess.check_output("echo %computername%", shell=True).decode(sys.stdout.encoding).splitlines()[0]
username = subprocess.check_output("echo %username%", shell=True).decode(sys.stdout.encoding).splitlines()[0]
isadmin = ctypes.windll.shell32.IsUserAnAdmin()
sleep(0.5)
s.send(computername.encode() + ";;".encode() + username.encode() + ";;".encode() + str(isadmin).encode())
這是一塊服務器代碼,是應該接受它:
data = conn.recv(1024).decode().split(";;")
print(data)
clientcount += 1
clientlist.append({"conn": conn, "ip": ip, "id": clientcount, "name": data[0] + "\\" + data[1], "isadmin": int(data[2])})
(打印行只是爲了調試) 所以這裏的問題。當我執行客戶端代碼爲client.py
,一切都正常工作,我得到這樣的輸出:
['DESKTOP-#######', '######', '0']
和代碼可以繼續。但是,當我執行程序爲client.pyw
,因爲它應該是,我得到:
['']
所以當然我得到一個IndexError。我猜測subprocess.check_output出了問題。這是正常的嗎?我可以用什麼來替換它,所以它在後臺工作?
(我使用python 3.5)
感謝
Je suppose que tu estfrançaisvu ton nom,çatombe bien,moi aussi ^^。 Haha,quel idiot,j'avaiscomplètementoubliéos.getenv ==「。Je vaisutiliserça,mais sinon,j'airésolumonproblème。C'étaita cause du sys.stdout.encoding,vu que c'est en arrière計劃這不是一個傳統的標準^^「。 Sansçaçamarche,mais je vais quandmêmeutiliser os.getenv(),加上乾淨。留言Merci! – Alpha
oui,c'est mieux!是的,它更好。 –