如何使用PyInstaller编译Python程序后输入参数

2022-03-23 00:00:00 python pyinstaller

问题描述

import sys之后,我使用sys.argv获取输入参数。

但是,在我使用PyInstaller编译我的程序之后,exe程序将不接受我的输入。相反,它使用我为程序设置的默认值。

如果我用python this_script.py运行它,它会等待我的输入指定wait_time。但是,在我用PyInstaller编译之后,如果我双击exe文件,就没有地方让我输入wait_time

如何编译它并让exe文件接受我的输入?

import sched, time
import sys
    
s = sched.scheduler(time.time, time.sleep)
    
# wait_time is an integer representing how many seconds to wait.
def do_something(sc, wait_time): 
    # 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()

解决方案

如果单击可执行文件将其打开:

通常,当您双击exe时,只有一个参数是<EXEfilename>。为该EXE创建快捷方式。在该快捷方式的属性中,您将看到一个名为Target的属性,该属性将包含<EXEfilename>,将其更改为<EXEfilename> <arg1> <arg2>。当您使用此快捷方式打开exe时,它会调用目标,即this call<EXEfilename> <arg1> <arg2>。然后,您可以使用sys.argv

访问arg1arg2

如果使用命令行:

就称它为C:> <EXEfilename> <arg1> <arg2>

相关文章