如何在命令行中自动运行输入/输出

时间:2020-01-03 18:16:50

标签: python python-3.x command-line

我有一个将json转换为csv的脚本。是否有cron可以在命令行中自动执行以下操作以每小时运行一次?也许在每次运行之后在输出后添加一个数字?
python3 file.py --input input.json --output output.csv

2 个答案:

答案 0 :(得分:0)

“ crontab -e”以编辑您的crontab。 将其全部添加到crontab的末尾:

30 * * * *  /path/to/python3 /path/to/file.py --input /path/to/input.json --output /path/to/output.csv.`date +%Y%m%d%H%M` > /dev/null 2>&1

(如果您希望在出现标准错误或过程中收到电子邮件时,请勿使用添加:> / dev / null 2>&1 )

此操作将在每小时30分钟的标记处运行。它将创建带有日期和时间戳的输出。如果要生成序列号(而不是日期时间),则需要保留一个包含当前序列的文件,并在每次crontab运行时对其进行更新,这会更加复杂。

您会发现,当日期格式设置为YEARMONTHDAYHOURMINUTE时,结果数字将按顺序排序,所以对我来说,通常比顺序号更好。

如果您确实需要序列号而不是日期戳,请编写一个小的shell脚本,该脚本应包含以下内容:使用“ expr”向文件中存储的数字加1,然后运行您的进程,然后更新序列文件:

#!/bin/bash

 OLD_SEQ=`cat /path/to/sequence.dat`
 NEW_SEQ=`expr ${OLD_SEQ} + 1`
 python3 file.py --input input.json --output output.csv.${NEW_SEQ}
 echo ${NEW_SEQ} > /path/to/sequence.dat

然后,您可以通过cron调用此bash脚本,其方式几乎相同。

答案 1 :(得分:0)

不知道您使用的是哪个系统,但是您的用例有crontab。

您可以按照以下答案根据您的操作系统How to install cron进行安装。

此后,您的命令应该是:

0  *  *  *  *  python3 file.py --input /<_absolute_path>/input.json --output /<_absolute_path>/output.csv

如果有后缀,则最好创建脚本

#!/bin/bash
suffix=$(date +"%m%d%H")
python3 file.py --input /<_absolute_path>/input.json --output /<_absolute_path>/output.csv
mv /<_absolute_path>/output.csv "/<_absolute_path>/output_$suffix.csv"

然后在cron标签中使用它

0  *  *  *  * bin/bash /absolute/path/to/your/script
相关问题