我的shell脚本运行一个python任务管理器模块,最后创建一个.png文件。然后shell脚本通过电子邮件发送给我.png。如果我单独运行任务,它们就可以了,但是将它们组合在同一个.sh中会产生一个带有空附件的电子邮件。
python的尾部结束:
fig = plt.figure()
ax2 = fig.add_subplot(111)
ax2.scatter(goodRIDs.ASL75,goodRIDs.closet_count_per_slot,
color='green',alpha=0.2)
ax2.scatter(badRIDs.ASL75,badRIDs.closet_count_per_slot,
color='red',alpha=0.5)
plt.savefig('todaysASL'+str(pct)+'chart.png')
path = os.getcwd()
os.chdir(path+'/ASLgraphs')
plt.savefig(today+'ASL'+str(pct)+'vClosetperSlot.png')
shell脚本:
. venv/bin/activate
file=/home/todaysASL75chart.png
file1=/home/todaysASL95chart.png
python ~/WeeklyRIDTrendFinder.py 75 > $file
python ~/WeeklyRIDTrendFinder.py 95 > $file1
(echo "Today's ASL chart for the past week" ; uuencode $file ; uuencode $file1 )
| mail -s "Weekly ASL Chart" -r "from@email.com" me@email.com
这是某种潮红问题吗?我尝试过做plt.flush(),但显然情节模块不像文件那样。
答案 0 :(得分:0)
您是否可能需要在图表创建和电子邮件创建之间延迟?也许尝试2秒延迟,看看会发生什么。我以前看过,在脚本中解决问题,可能值得尝试。
答案 1 :(得分:0)
可能savefig
未正确关闭文件(并依赖于垃圾收集器)。试试这个:
#...
f=open(today+'ASL'+str(pct)+'vClosetperSlot.png', 'wb')
plt.savefig(f)
f.close()
#...
答案 2 :(得分:0)
原来这是一个stdout与文件保存问题 - shell脚本接受任何python打印,并将其保存在file和file1。但是,Python正在保存文件而不打印任何内容,因此shell脚本不会收集任何内容并保存它。
将shell脚本更改为:
. venv/bin/activate
python ~/monica-repo/dev/bi/RIDqualifier/WeeklyRIDTrendFinder.py 75
python ~/monica-repo/dev/bi/RIDqualifier/WeeklyRIDTrendFinder.py 95
(echo "ASL chart with the past week of RIDs at 48hrs") | mailx -s "Weekly ASL Chart" -a todaysASL75chart.png -a todaysASL95chart.png me@email.com
让它工作得很好