2014-09-22 43 views
3

import sys之后,我用sys.argv得到输入参数。编译python程序后,如何输入参数

但我用pyinstaller编译我的程序后,exe程序将不会接受我的输入。

它只会使用我为程序设置的默认值。我如何编译它并让exe文件接受我的输入?

我希望我不需要为它写一个gui。抱歉回复晚了。下面是代码:


import sched, time 

import sys 



s = sched.scheduler(time.time, time.sleep) 




def do_something(sc,wait_time): //wait_time is an integer representing how many seconds to wait. 

    // Here will be the code for doing something every after "wait_time " seconds 

    sc.enter(wait_time,1,do_something,(sc,wait_time)) 

try: 
    wait_time = int(sys.argv[1]) 
except IndexError: 
    wait_time = 5  


# s.enter(wait_time, 1, do_something, (s,)) 


s.enter(wait_time,5,do_something,(s,wait_time)) 
s.run()  

如果我和“蟒蛇this_script.py”运行它,它会等待我为等待多少秒输入。但在我用pyinstaller编译后,我双击了exe文件。我无法输入等待时间的号码。

+0

你可以给我们一个短小简洁,代码的工作示例演示了这个问题:然后,您可以使用sys.argv

如果使用命令行访问arg1arg2?您是否试图将其作为脚本运行而不是编译的可执行文件? – 2014-09-22 23:07:58

+0

你如何运行生成的'.exe'文件?你是从命令提示符运行它还是你点击它? – 2014-09-22 23:08:34

+0

您是否提供任何命令行参数? – user2357112 2014-09-22 23:23:22

回答

9

如果您单击文件就可以打开它:

通常,当你双击exe文件,只有一个是<EXEfilename>说法。为该exe创建一个快捷方式。在该快捷方式的属性中,您将看到名为Target的属性,其中将包含<EXEfilename>更改为<EXEfilename> <arg1> <arg2>。当你使用这个快捷方式打开exe时,它会调用目标,这就是这个调用<EXEfilename> <arg1> <arg2>

只是把它作为C:\> <EXEfilename> <arg1> <arg2>

+0

谢谢!在更改目标后添加后,它可以正常工作。但是有什么办法可以让我交互地输入arg1吗? – ohmygoddess 2014-09-25 16:39:13

+0

我看到这个问题是由于windows系统。对于linux,我们可以在shell中运行。对于Windows,我们用双击exe,除非我们使用cmd或者将gui添加到程序中,否则我们不能输入。 – ohmygoddess 2014-09-25 16:46:49

+0

或者您可以使用打开的控制台。如果你使用的是python 2的'arg1 = raw_input('Enter arg1')',如果你使用的是python 3,那么'arg1 = input('输入arg1')'。这可让用户以交互方式输入参数。 – ashwinjv 2014-09-25 16:51:15