从Python中的命令行输入变量

时间:2015-05-22 09:14:35

标签: python variables input

我想做的事情很简单,但我无法找到一个好的,不太复杂的解决方案。基本上我想定义一些全局变量,例如用作文件夹名称

global folder = "C:\\TEMP\\" + foldername

我想要的是在运行脚本时将foldername值设置为输入,例如:

python myscript.py --folder somebeautifulfoldername

所以在运行我的脚本时,该文件夹将变为C:\ TEMP \ somebeautifulfoldername

4 个答案:

答案 0 :(得分:2)

您可以使用内置的argparse模块,并从import argparse import sys if __name__ == '__main__': parser = argparse.ArgumentParser(description = 'My script') parser.add_argument('--folder', help = "Subfolder of C:\TEMP\ to manipulate") args = parser.parse_args(sys.argv[1:]) folder = "C:\\TEMP\\"+args.folder print folder 获取命令行参数:

>python myscript.py --folder somebeautifulfoldername
C:\TEMP\somebeautifulfoldername

>python myscript.py --help
usage: tmp.py [-h] [--folder FOLDER]

My script

optional arguments:
  -h, --help       show this help message and exit
  --folder FOLDER  Subfolder of C:\TEMP\ to manipulate

这里我添加了一个非常简单的参数和一些基本的帮助字符串,但你可以做很多这样的事情,例如给出一个默认值,允许一个文件列表而不是一个文件,指定类型,... 。有关详细信息和示例,请参阅手册。

用法:

$('#txt').on('input',function(e){
      $('p').html($(this).val());
});

答案 1 :(得分:1)

import sys

folder = "none"
if("--folder" in  sys.argv):
    folder = sys.argv[sys.argv.index("--folder") + 1]        
print folder

如果您按照自己的方式运行它:

python myscript.py --folder "HELLOFOLDER"

它会给:HELLOFOLDER

答案 2 :(得分:0)

您可以将参数传递给Python脚本,如下所示:

$this->user_model->do_something();

这就是你得到的

$this->User_model->do_something();

在你的情况下:

python test.py arg1 arg2 arg3

Argument List: ['test.py', 'arg1', 'arg2', 'arg3']

答案 3 :(得分:0)

有许多选项可以将命令行参数解析为Python脚本。例如,有标准库optparseargparse

一个非常好的第三方工具是docopt,它允许您通过直接将脚本用法描述为脚本文档来非常轻松地编写上述逻辑:

"""My script

Usage:
  myscript.py --folder=<folder>

Options:
  -h --help             Show this screen.
  --version             Show version.
  --folder=<folder>     Choose folder.
"""

from docopt import docopt

if __name__ == '__main__':
    arguments = docopt(__doc__, version='myscript 1.0')
    folder = "C:\\TEMP\\" + arguments["--folder"]
    print(folder)

也就是说,您可能还希望调查tempfile来生成临时文件,以使脚本更具跨平台性。特定于Windows的硬编码路径很少是个好主意。