Python Freezing:一般过程和用户​​输入?

时间:2016-09-03 19:15:20

标签: python python-2.7 vpython

我对冻结和打包代码的过程相对较新,我对冻结项目的一个担忧是我如何处理用户输入。我在项目中有一个主文件,它处理物理内容,输入区域如下:

#Coil(center, radius, normal vector, current, scene, loops(default=1), pitch(default=1))

#Example coil:
r = Coil(vector(0, 0, 0), 10, vector(0, 1, 1), 10, d, 10, 0.5)

所以在我用py2exe打包文件或我发现的任何类似文件之后,有没有办法让用户输入如上所述,或者我需要在打包代码之前为其创建用户界面?谢谢!

1 个答案:

答案 0 :(得分:1)

一旦您的代码被冻结,代码的内容就不能再被更改了(不需要回到原始代码),但是您可以使用许多策略:

  • 一次提示用户缺少参数 - 使程序难以使用
  • 允许用户在命令行上提供参数,例如:使用argparse - 启用批量调用代码 - 可以与上述结合使用
  • 允许用户提供一个文件,其中包含每行一个参数,一行逗号分隔参数,每行调用一次函数或多种其他选项,如xml,ini格式等。 - 更好的批量调用 - 这可以与上述两种方法结合使用,您可以选择--file
  • 以上所有可能是最佳选择
  • 使用Tinker,QT或wxPython 为参数提供GUI输入,通常大部分工作仍然可以与上述结合使用
  • 可以实现类似架构的插件以提供默认代码,但也允许用户提供替代代码,但存在安全问题。
  • 您可以将上述代码保留在冻结的应用程序之外,但可以将其作为.py文件包含在内,用户可以修改 小心 用户将拥有可用的全部python功能,包括您的应用程序包含的任何可以进行恶意更改的库
  • 您可以编写自己的小语言,以便用户提供所需的项目,例如:使用TextX或仅列出here列出的任何工具,然后允许用户提供输入文件。

在行之间读取,看起来用户指定了一些对象实例,然后创建和处理这些对象实例,从而解析一些伪语言,来自命令行参数或来自文件,将是要走的路。然后解析,(并验证)输入,并为每个对象创建一个实例并将其添加到列表中。然后一旦输入消耗处理列表中的所有实例。