我正在试验文件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.argv
来做。查看此链接:http://docs.python.org/library/sys.html#sys.argv。但请记住不要忘记import sys
,然后您就可以使用它了。 导入系统argv[0]
有test.py
argv[1]
有text.txt
编辑:但是,我对这个主题做了更多的研究,发现了这个:https://stackoverflow.com/a/4188500/1276534
正如katrielex所指出的,也许你也可以研究一下^{} 。?它提供了更多的功能和安全检查。有趣的信息。
这里有一个很棒的教程:http://www.doughellmann.com/PyMOTW/argparse/
您需要的是sys模块或optparse模块。
sys将为您提供对命令行参数的基本控制。
例如:
在上面的例子中,如果要打开一个shell并键入-
结果输出将是:
请注意,sys.argv[0]是当前运行的脚本的名称。后面的每个参数都由一个空格定义,因此在上面的示例中
Optparse提供了一个更加健壮的解决方案,允许您使用多个选项定义命令行开关,并定义变量,这些变量将存储在运行时可以访问的适当选项。
重新编写示例:
您可以使用以下命令运行程序:
并且输出(在myfile.txt中)将是预期的:
希望能有帮助!
你要找的是类似于pythonargparse module
或者可以直接使用sys.argv读取值
相关问题 更多 >
编程相关推荐