我想要做的事情非常简单,但我无法找到一个好的、不太复杂的解决方案。基本上,我想定义一些全局变量,这些变量将被用作文件夹名称等。
global folder = "C:\\TEMP\\" + foldername
我希望在运行脚本时,将文件夹名称作为输入值设置,类似于:
python myscript.py --folder somebeautifulfoldername
所以在运行我的脚本时,文件夹将变为C:\ TEMP \ somebeautifulfoldername
我想要做的事情非常简单,但我无法找到一个好的、不太复杂的解决方案。基本上,我想定义一些全局变量,这些变量将被用作文件夹名称等。
global folder = "C:\\TEMP\\" + foldername
我希望在运行脚本时,将文件夹名称作为输入值设置,类似于:
python myscript.py --folder somebeautifulfoldername
所以在运行我的脚本时,文件夹将变为C:\ TEMP \ somebeautifulfoldername
python test.py arg1 arg2 arg3
这是你将获得的结果
参数列表: ['test.py', 'arg1', 'arg2', 'arg3']
在您的情况下:
python myscript.py 某个漂亮的文件夹名称
folder = "C:\\TEMP\\" + sys.argv[1]
argparse
模块结合从sys.argv
获取命令行参数来完成此操作: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
import sys
folder = "none"
if("--folder" in sys.argv):
folder = sys.argv[sys.argv.index("--folder") + 1]
print folder
python myscript.py --folder "HELLOFOLDER"
有许多选项可以将命令行参数解析到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特定路径很少是一个好主意。