2010-08-02 88 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) 

在您的循环中的适当位置。