当shell脚本运行python模块生成文件和emai时,附件为空

2024-04-28 05:54:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我的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

这是不是有什么问题?我试过了平齐(),但显然绘图模块的行为不像文件。你知道吗


Tags: 模块文件脚本pngfigpltshellfile1
3条回答

原来这是一个标准输出与文件保存的问题,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

使它工作得很好

在图表创建和电子邮件创建之间是否可能需要延迟?也许试着延迟2秒钟,看看会发生什么。我以前见过用脚本解决问题,可能值得一试。你知道吗

可能savefig没有正确关闭文件(并且依赖于垃圾收集器)。试试这个:

#...
f=open(today+'ASL'+str(pct)+'vClosetperSlot.png', 'wb')
plt.savefig(f)
f.close()
#...

相关问题 更多 >