我想做的事情很简单,但我无法找到一个好的,不太复杂的解决方案。基本上我想定义一些全局变量,例如用作文件夹名称
global folder = "C:\\TEMP\\" + foldername
我想要的是在运行脚本时将foldername值设置为输入,例如:
python myscript.py --folder somebeautifulfoldername
所以在运行我的脚本时,该文件夹将变为C:\ TEMP \ somebeautifulfoldername
答案 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脚本。例如,有标准库optparse和argparse。
一个非常好的第三方工具是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的硬编码路径很少是个好主意。