我写了一个脚本来检索网站的天气预报,并在早上发送给我的女朋友。
使用Gmail。当然我可以使用我的Postfix服务器发送它。这是脚本。
我不确定如何在有这么多参数的情况下使用Popen()函数。
我可以使用命令发送邮件。
$ mail -s "おお様からの天気予報" abc@gmail.com < foo
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from bs4 import BeautifulSoup
import urllib2
import subprocess
weather_url = "http://www.weather.com.cn/weather/101020100.shtml"
f=urllib2.urlopen(weather_url)
html = f.read()
soup = BeautifulSoup(html)
content = soup.title.string
with open("foo","w") as mail:
mail.write(content.encode('utf-8'))
command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
li = command_line.split()
process = subprocess.Popen(li, shell=True)
returncode = process.wait()
天气预报的内容位于foo
文件中。有人可以告诉我如何使用Popen()
这么多的论点吗?
我尝试了很多。
这个脚本似乎不起作用。
答案 0 :(得分:2)
使用shell=True
时,您不需要传递参数列表,只需传递参数字符串...
command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
process = subprocess.Popen(command_line, shell=True)
或..你不能使用shell来解释你的参数并传递一个列表......
command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
li = command_line.split()
process = subprocess.Popen(li)
但你不能传递参数列表和使用shell来解释它。
根据命令的性质,我建议将字符串传递给shell进行解释。 (第一个选项)