5

我编写了一个脚本来从网站上检索天气报告,并在早上将其发送给我的女朋友。

使用 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()这么多参数吗?

我尝试了很多。

这个脚本似乎不起作用。

4

1 回答 1

0

使用时不需要传递参数列表,shell=True只需传递参数字符串...

command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
process = subprocess.Popen(command_line, shell=True)

或者..您不能使用外壳来解释您的参数并传递一个列表...

command_line = 'mail -s "おお様からの天気予報" abc@gmail.com < foo'
li = command_line.split()
process = subprocess.Popen(li)

但是您不能传递参数列表使用 shell 来解释它。

根据您的命令的性质,我建议将字符串传递给 shell 进行解释。(第一个选项)

于 2013-07-01T07:54:42.827 回答