是否可以在运行时将参数传递给 python 生成的 exe?

2023-11-25

我正在尝试文件 I/O。我有一个小型练习程序,运行时会创建一个文本文件。我用 pyinstaller 打包它,这样双击 exe 就会创建一个新文件夹,并在其中放置一个带有“hello world”的文本文件。十分简单。

然后我开始想知道main()。这只是一个像其他函数一样的函数,对吧?那么这是否意味着我可以在运行时向它传递参数?

我正在考虑 Steam 客户端以及如何将“-dev”和“-console”等内容放入快捷方式中。有没有办法对我制作的 python exe 执行此操作?

我可能解释得很糟糕,所以这是一个例子:

def makeFile(string):
    if string:
        f = open('mytext.txt', 'w') #create text file in local dir
        print >> f, 'hello, ' + string + '! \nHow are ya?'
        f.close()
    else:
        f = open('mytext.txt', 'w') #create text file in local dir
        print >> f, 'hello, person! \nHow are ya?'
        f.close()

def main(string = None):
    makeFile(string)     

因此,如果我采用此代码并将其设为 exe,我是否能够以某种方式添加我的可选参数。

我尝试了上面的代码,并且运行test.exe --"myname"但这没有用。

有没有办法做到这一点?


您正在寻找的是 sys 模块或 optparse 模块。

sys 将为您提供对命令行参数的非常基本的控制。

例如:

import sys

if __name__ == "__main__":
    if len(sys.argv)>1:
        print sys.argv[1]

在上面的示例中,如果您要打开 shell 并输入 -

test.exe "myname"

结果输出将是:

myname

请注意,sys.argv[0] 是您当前正在运行的脚本的名称。每个后续参数都由空格定义,因此在上面的示例中

test.exe -- myname

argv[0] = "test.exe"
argv[1] = "--"
argv[2] = "myname"

Optparse 提供了一个更强大的解决方案,允许您定义具有多个选项的命令行开关,并定义将存储可在运行时访问的适当选项的变量。

重写你的例子:

from optparse import OptionParser

def makeFile(options = None): 
    if options:
        f = open('mytext.txt', 'w') #create text file in local dir
        print >> f, 'hello, ' + options.name + '! \nHow are ya?'
        f.close()
    else:
        f = open('mytext.txt', 'w') #create text file in local dir
        print >> f, 'hello, person! \nHow are ya?'
        f.close()



if __name__ == "__main__":
    parser = OptionParser()
    parser.add_option('-n','--name',dest = 'name',
                      help='username to be printed out')
    (options,args) = parser.parse_args()
    makeFile(options)

您可以使用以下命令运行您的程序:

test.exe -n myname

输出(在 myfile.txt 中)将是预期的:

Hello, myname!
How are ya?

希望有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在运行时将参数传递给 python 生成的 exe? 的相关文章

随机推荐

  • “在 MATLAB 路径中隐藏它”是什么意思?如何在文件中做到这一点?

    我需要在运行 unitTester 文件之前始终执行此操作 我不明白为什么需要这样做 这是什么意思 为什么是 Add to Path gt Selected Folders and Subfolders 不够 Update This her
  • 如何定位直接文本而不是标签内的文本?

    有没有办法只定位直接文本 h1 Tag 这是我想做的事情的一个例子 h1 I want to select this text with a css selector h1 h1
  • Swift 中的 UTTypeCreatePreferredIdentifierForTag 和 CFStringRef

    import Foundation import MobileCoreServices func checkFileExtension fileName NSString println fileName var fileExtension
  • RecyclerView notificationItemRangeChanged 不显示新数据

    我遇到了一个问题RecyclerView Adapter关于notifyItemRangeChanged 看来如果Adapter认为它的大小为0从上次通话到getItemCount 然后我打电话Adapter notifyItemRange
  • git 拒绝在没有代理的情况下连接

    我在 Windows 环境中使用 Linux 系统 为了使用 NT 代理服务器进行身份验证 我进行了设置cntlm并配置系统程序以通过设置使用它http proxy环境变量中的 etc environment file 现在我想删除此代理设
  • 在 Pyspark Dataframe 上透视字符串列

    我有一个像这样的简单数据框 rdd sc parallelize 0 A 223 201603 PORT 0 A 22 201602 PORT 0 A 422 201601 DOCK 1 B 3213 201602 DOCK 1 B 321
  • 如何在 swift 中使用 .a 静态库?

    我想在 swift 中使用我的 webrtc a 静态库 你能帮忙吗 我读到你不能在 swift 中使用静态库 是真的吗 你问的这个问题解决了吗 我今天也遇到这个问题了 一会儿就解决了 如果您尚未解决此问题 您可以尝试以下步骤 p s 这两
  • 如何验证国际化域名[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我想验证 php 中的域名 url 该域名可能采用国际化域名格式 如希腊语 域名 http 他们有什么方法可以使用正则表达式来验证它吗 这是一个所谓的国际化域名 支持 IDN 域
  • 通过浏览器操作/图标禁用/启用 Chrome 扩展

    我正在开发的 chrome 扩展将内容脚本和 CSS 插入到网站的每个页面上 但是 用户可能有一个或多个页面 他或她不希望扩展程序在其上运行 因此如果我可以将浏览器操作设置为基本上打开 关闭切换 那就太好了 我想做的是这样的 chrome
  • 将 React Redux 与 next.js 结合使用

    我尝试将 Redux 与next js 启动器项目和我安装的next redux wrapper在该项目中 但我不确定该项目中的根文件在哪里 我尝试按照显示的教程进行操作next redux 包装器但没有成功 没变化 请帮助我如何将 Red
  • 如何在 iOS 上重置沙盒应用内购买以进行测试?

    我做了一个沙盒 iTunes 用户 购买了一个项目 这有效 但我的显示该项目的代码中存在一些问题 所以我想重新买来测试一下 问题是 我无法清除我的购买 我注销了我的沙盒用户 删除了应用程序并重新安装了它 更改了 iTunes 用户几次 该项
  • 如何使用 Eigen 3 表达“ = <= ”?

    我正在移植一些MATLAB代码到C 使用Eigen 3模板库 我正在寻找这个常见的良好映射MATLAB idiom K gt gt 1 2 3 4 5 lt 3 ans 1 1 1 0 0 因此 比较数组和标量 返回具有相同形状的布尔值数组
  • 用于检查多个值的 jQuery 'if' 条件

    在下面的代码中 是否有更好的方法使用 jQuery 检查条件 if test1 val first value test2 val second value test3 val third value test4 val fourth va
  • “条件调用”在 amd64 上的性能

    当考虑代码关键部分中的条件函数调用时 我发现 gcc 和 clang 都会围绕该调用进行分支 例如 对于以下 诚然微不足道的 代码 int32 t attribute noinline negate int32 t num return n
  • 将 SpriteKit 视图集成到 xib 视图中

    我有一个已经使用 xib 文件创建的视图 现在我想向此视图添加一些小元素 这些元素将使用 SpriteKit 中的一些物理动画 所以现在我需要一个 SKView 是否可以添加 SKView 作为与我的 xib 视图相对应的视图的子视图 我尝
  • Fortran 2018+ 中过时的 DO 循环

    我正在使用可能是在最新版本的 gfortran 之前编写的源代码 我知道 DO END DO 和 CONTINUE 的方式已更改 因此不能共享循环终止 有一个方便的链接here 问题是 我不知道该页面上的解释到底告诉我要做什么 如果我在新脚
  • Tomcat 7 tomcat-users manager-script /deploy 示例

    我正在尝试让管理器 部署在新安装的 Tomcat 7 0 34 上工作 但是当我尝试通过执行 PUT 进行部署时 我不断收到 403http localhost 8080 manager deploy 我还没有在 Tomcat 7 中使用它
  • Angular - POST 上传的文件

    我在用着Angular 打字稿将文件与 JSON 数据一起发送到服务器 下面是我的代码 import Component View NgFor FORM DIRECTIVES FormBuilder ControlGroup from an
  • Python:在“exec”环境中奇怪的“NameError:名称...未定义”

    我有信心至少对 Python 的作用域系统有一些基本的了解 现在我收到一个错误 不幸的是到目前为止我什至无法编写一个好的代码片段来进行复制 我尝试在一个新的小项目中重现它 但一切都按我的预期进行 我只能描述我所做的事情 希望有人能发现一种模
  • 是否可以在运行时将参数传递给 python 生成的 exe?

    我正在尝试文件 I O 我有一个小型练习程序 运行时会创建一个文本文件 我用 pyinstaller 打包它 这样双击 exe 就会创建一个新文件夹 并在其中放置一个带有 hello world 的文本文件 十分简单 然后我开始想知道mai