我想多次运行python文件,并在每次运行时更改输入值。在这种情况下,输入值是网站地址和两个日期范围,分别具有给定的开始日期和给定的结束日期。
示例:
我想遍历并运行该文件,并在12个月前使用不同的日期。
文件
迭代1,今天的日期和当月的第一天:
run -i 'file.py' 'https://www.example.com/' '2019-09-01' '2019-09-12'
迭代2,上个月的第一个日期和上个月的最后一个日期:
run -i 'file.py' 'https://www.example.com/' '2019-08-01' '2019-08-31'
迭代3:
run -i 'file.py' 'https://www.example.com/' '2019-07-01' '2019-07-31'
...
继续迭代12个月
我已经设法建立一个用于生成日期的for循环,但是我在合并python文件时遇到了麻烦。
for i in {1..12}; do
echo $(date -I -d "2019-09-01 -$i months")
done
输出:
2019-08-01
2019-07-01
2019-06-01
2019-05-01
2019-04-01
2019-03-01
2019-02-01
2019-01-01
2018-12-01
2018-11-01
2018-10-01
2018-09-01
答案 0 :(得分:0)
您可以尝试
run -i 'file.py' 'https://www.example.com/' '2019-09-01' '2019-09-12'
for i in {1..12}; do
run -i 'file.py' 'https://www.example.com/' '`echo $(date -I -d "2019-09-01 -$i months")`' '`echo $(date -I -d "2019-09-31 -$i months")`'
done
您可以使用反引号(`)评估命令并替换命令输出中的内容,例如您的日期。
更好的方法是调用python script from another script(假设您是第一个脚本的编写者)。
答案 1 :(得分:0)
您可以使用以下代码:
d1=$(date '+%Y-%m-01')
d2=$(date '+%Y-%m-%d')
for i in {1..12}; do
run -i 'file.py' 'https://www.example.com/' $d1 $d2
d2=$(date -d "$d1 -1 day" '+%Y-%m-%d')
d1=$(date -d "$d2" '+%Y-%m-01')
done
说明:
d1
开始,当前月份的当前一天的d2
。d2
(即上个月的第一天)推导出d1
。将执行以下命令行:
run -i file.py 'https://www.example.com/' 2019-09-01 2019-09-12
run -i file.py 'https://www.example.com/' 2019-08-01 2019-08-31
run -i file.py 'https://www.example.com/' 2019-07-01 2019-07-31
run -i file.py 'https://www.example.com/' 2019-06-01 2019-06-30
run -i file.py 'https://www.example.com/' 2019-05-01 2019-05-31
run -i file.py 'https://www.example.com/' 2019-04-01 2019-04-30
run -i file.py 'https://www.example.com/' 2019-03-01 2019-03-31
run -i file.py 'https://www.example.com/' 2019-02-01 2019-02-28
run -i file.py 'https://www.example.com/' 2019-01-01 2019-01-31
run -i file.py 'https://www.example.com/' 2018-12-01 2018-12-31
run -i file.py 'https://www.example.com/' 2018-11-01 2018-11-30
run -i file.py 'https://www.example.com/' 2018-10-01 2018-10-31