Windows命令提示符运行Python脚本时如何传入日期参数控制random_date变量
命令行传入参数控制脚本内日期的实现方法
实现原理
你已经在脚本里导入了sys模块,不需要额外装任何第三方库就能完成参数读取:
- 当在Windows命令提示符中执行
python 你的脚本.py 参数值1 参数值2格式的命令时,sys模块会自动把所有命令行输入内容按顺序存到sys.argv列表里 - 列表第0位固定是当前运行的脚本本身的路径,从下标1开始的元素,就是你手动追加在脚本名后面的参数内容
修正后可直接运行的脚本
你原来的代码直接执行会触发几个报错:未导入os模块就调用os.chdir、导入pandas时没有设置pd别名,后续直接用pd.DataFrame()会触发名称未定义错误、硬编码的日期值没法动态修改。修正后的完整代码如下:
import pandas as pd import sys import os # 切换指定工作目录 os.chdir("n:/user/factory") # 加个简单的参数校验,避免漏传时脚本报无意义的错误 if len(sys.argv) < 2: print("运行提示:请在脚本名后追加yyyy-mm-dd格式的日期参数,示例:python 脚本名.py 2017-01-20") sys.exit(1) # 直接取命令行传入的第一个参数赋值给日期变量,全程不需要改脚本内容 random_date = sys.argv[1] # 原有数据处理逻辑保持不变 df = pd.DataFrame() df['salary_date'] = random_date
命令行实际操作方式
代码存好后,直接在cmd里进入脚本所在目录运行即可,要更换日期值时,只需要改命令最后面的参数就行,完全不用打开脚本修改:
- 要设置日期为2019-08-20:
python 你的脚本文件名.py 2019-08-20 - 要设置日期为2017-01-20:
python 你的脚本文件名.py 2017-01-20
常见注意点
- 如果传入的日期内容带空格,需要用英文双引号把日期包起来,否则会被cmd拆成多个独立参数,导致脚本读错值,比如传带时间的日期要写
python 脚本名.py "2017-01-20 00:00:00" - 原脚本里
cwd = os.chdir("n:/user/factory")的写法没有实际作用,os.chdir方法本身会直接修改当前工作目录,没有返回值,赋值给变量是多余操作
内容的提问来源于stack exchange,提问作者Arpit
相关产品推荐
相关产品推荐

