2010-08-02 253 views
-5

此代碼不再做任何事情後,我改變了什麼,我已經不記得Python應用程序什麼也不做

#Dash Shell 
import os 
import datetime 

class LocalComputer: 
    pass 

def InitInformation(): 
    Home = LocalComputer() 
    #Acquires user information 
    if (os.name == "nt"): 
     Home.ComputerName = os.getenv("COMPUTERNAME") 
     Home.Username = os.getenv("USERNAME") 
     Home.Homedir = os.getenv("HOMEPATH") 
    else: 
     Home.ComputerName = os.getenv() 
     Home.Username = os.getenv("USER") 
     Home.Homedir = os.getenv("HOME") 
    return Home 

def MainShellLoop(): 
    print ("--- Dash Shell ---") 
    Home = InitInformation() 
    userinput = None 
    currentdir = Home.Homedir 
    while (userinput != "exit"): 
     rightnow = datetime.datetime.now() 
     try: 
      userinput = input(str(Home.ComputerName) + "\\" + str(Home.Username) + ":" + str(rightnow.month) + "/" + str(rightnow.day) + "/" + str(rightnow.year) + "@" + str(currentdir)) 
     except: 
      print("Invalid Command specified, please try again") 

MainShellLoop() 

編輯:大聲笑對不起你們忘了說,它應該運行輸入

+0

我收到關於'os.getenv()'的投訴,因爲它需要一個參數。 – 2010-08-02 20:38:09

+3

@Indebi:你甚至不會去猜測你爲了做到這一點而改變了什麼? – 2010-08-02 20:38:39

+3

這是您應該使用源代碼管理的一個原因,即使是非常小的項目。不起作用?只需回滾到一個版本,看看有什麼變化! – 2010-08-02 20:46:44

回答

2

你應該更好地描述你的問題。它是否打印輸入提示?它輸出任何東西嗎?它會退出還是坐在那裏?在閱讀這段代碼時,我注意到了一些問題,可能會有所幫助。你應該使用raw_input(),而不是input()。另外,除非它=='exit',否則你實際上並沒有對userinput做任何事情。哪個不會,因爲你只是使用input()而不是raw_input(),所以這個人必須輸入'exit'(包括引號),否則循環將永遠不會退出。 (假設它不是Python 3代碼)

+0

如果代碼是Python 3(很可能是因爲'print'被用作函數),那麼'input()'是正確的。 – 2010-08-02 20:53:35

+0

你有一個好點。謝謝你提到這一點。 – 2010-08-02 20:59:23

+0

它的python 3.1.2 – 2010-08-03 00:46:04

1

os.getenv()必須至少有一個參數。嘗試os.getenv("HOST")什麼的。

+0

它以前沒有任何東西可用,它在Windows 7上編碼,因此零件沒有運行 – 2010-08-03 00:46:33

2

它沒有做任何事,因爲沒有任何代碼可以讓它做任何事情。嘗試插入一條線,如

print("You entered:", userinput) 

在您的循環中的適當位置。