Python实现统计英文单词数方法介绍

Python统计英文单词数是如何来实现的呢?下面的内容将会通过具体的实例来演示Python统计英文单词数的实现方法及相关技巧:

字符串分割

1
2
3
4
5
str="a|and|hello|||ab"

alist = str.split('|')

print alist

结果

1
2
3
4
5
str="a hello{这里换成5个空格}world{这里换成3个空格}"

alist=str.split(' ')

print alist

统计英文单词的个数的python代码

1
2
3
4
5
6
7
# -*- coding: utf-8 -*-

import os,sys

info = os.getcwd() #获取当前文件名称

fin = open(u'c:/a.txt')

info = fin.read()

alist = info.split(‘ ‘) # 将文章按照空格划分开

fout = open(u’c:/count.txt’, ‘w’)

fout.write(‘n’.join(alist)) # 可以通过文本文件的行号同样看到效果

##fout.write(‘%s’ % alist)

fout.close()

allen = len(alist) # 总的单词数

nulen = alist.count(”) # 空格的数量

print “words’ number is”,allen

print “null number is”,nulen

print “poor words number is”, allen-nulen # 实际的单词数目

fin.close()

Python统计英文单词数就是这样,欢迎大家参考。。。。

Python中使用不同编码读写文件的详细介绍

下面的内容主要介绍了Python中使用不同编码读写文件,欢迎大家参考:

1
2
3
4
5
import os

import codecs

filenames=os.listdir(os.getcwd())

out=file(“name.txt”,”w”)

for filename in filenames:

out.write(filename.decode(“gb2312”).encode(“utf-8”))

out.close()

Python中使用不同编码读写文件就是这样,欢迎大家参考。。。。

Python中import与from…import用法的不同之处

下面的内容主要介绍了Python中import与from…import用法的不同之处,欢迎大家参考:

在python用import或者from…import来导入相应的模块。模块其实就是一些函数和类的集合文件,它能实现一些相应的功能,当我们需要使用这些功能的时候,直接把相应的模块导入到我们的程序中,我们就可以使用了。这类似于C语言中的include头文件,Python中我们用import导入我们需要的模块。

eg:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import sys

print('================Python import mode==========================');

print ('The command line arguments are:')

for i in sys.argv:

    print (i)

print ('n The python path',sys.path)

from sys import argv,path  #  导入特定的成员

print('================python from import===================================')

print('path:',path) # 因为已经导入path成员,所以此处引用时不需要加sys.path

如果你要使用所有sys模块使用的名字,你可以这样:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
from sys import *

print('path:',path)

从以上我们可以简单看出:

############################

#导入modules,import与from...import的不同之处在于,简单说:

# 如果你想在程序中用argv代表sys.argv,

# 则可使用:from sys import argv

# 一般说来,应该避免使用from..import而使用import语句,

# 因为这样可以使你的程序更加易读,也可以避免名称的冲突

###########################

Python中import与from…import用法的不同之处就是这样,欢迎大家参考。。。。

Python中发送邮件到邮箱的方法

Python中发送邮件到邮箱是如何来实现的呢?下面的内容将会通过具体的实例来演示Python中发送邮件到邮箱的实现方法及相关技巧:

本文实例讲述了Python实现给qq邮箱发送邮件的方法。分享给大家供大家参考。具体实现方法如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#-*-coding:utf-8-*-
#==========================================
# 导入smtplib和MIMEText
#==========================================
from email.mime.text import MIMEText
import smtplib
#==========================================
# 要发给谁,这里发给2个人
#==========================================
mailto_list=["naughty610@qq.com","1034791200@qq.com"]
#==========================================
# 设置服务器,用户名、口令以及邮箱的后缀
#==========================================
mail_host="smtp.qq.com"
mail_user="naughty610"
mail_pass="here is your password"
mail_postfix="qq.com"
#==========================================
# 发送邮件
#==========================================
def send_mail(to_list,sub,content):
  '''''
  to_list:发给谁
  sub:主题
  content:内容
  send_mail("aaa@126.com","sub","content")
  '''

  me=mail_user+"<"+mail_user+"@"+mail_postfix+">"
  msg = MIMEText(content)
  msg['Subject'] = sub
  msg['From'] = me
  msg['To'] = ";".join(to_list)
  try:
    s = smtplib.SMTP()
    s.connect(mail_host)
    s.login(mail_user,mail_pass)
    s.sendmail(me, to_list, msg.as_string())
    s.close()
    return True
  except Exception, e:
    print str(e)
    return False
if __name__ == '__main__':
  if send_mail(mailto_list,"here is subject","here is content"):
    print "发送成功"
  else:
    print "发送失败"

Python中发送邮件到邮箱就是这样,欢迎大家参考。。。。

Python批量下载懒人图库网站中所有JavaScript特效

Python批量下载懒人图库网站中所有JavaScript特效是如何来实现的呢?下面的内容将会通过具体的实例来演示Python批量下载懒人图库网站中所有JavaScript特效的实现方法及相关技巧:

这是一个简单的Python脚本,主要从懒人图库下载JavaScript特效模板,在脚本中使用了gevent这个第三方库,使用的时候需要先安装。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/python
# -*- coding: utf-8 -*-

import urllib,os,sys
import gevent,re
from gevent import monkey
from bs4 import BeautifulSoup
gevent.monkey.patch_socket()

'''
Description:Python 爬虫抓取懒人图库的JS脚本模板
Author:admin
Create-Date:2015-05-25
Version:1.0
'''


HTTP_URL = 'http://www.lanrentuku.com%s'
DOWNLOAD_URL = HTTP_URL[:-2] + '/js/d%szip'
reg=r'd{1,}.+'

def encode(text):
  return text.encode("utf8")

def createDirectory(curPath):
  myPath = os.path.join(getSubDirectory(), u'JS代码模板')
  if not os.path.exists(myPath):
    os.mkdir(myPath)
  return os.path.join(myPath, curPath)

def getSubDirectory():
  return os.getcwd()

def schedule(a, b, c):
  per = 100.0 * a * b / c
  if per > 100 :
    per = 100
  sys.stdout.write('%.1f%%r' % per)
  sys.stdout.flush()

def geturllist(url):
  url_list = {}
  html = urllib.urlopen(url)
  content = html.read()
  html.close()
  # 用BeautifulSoup解析
  decodeHtml = BeautifulSoup(content)
  try:
    aTags = decodeHtml.find_all('div', {'class':'list-pngjs'})[0].find_all('a')
  except IndexError, e:
    print e
    aTags = None
  # 获取链接地址和标题
  if aTags is not None:
    for a_tag in aTags:
      url_list[HTTP_URL % a_tag.get('href')] = a_tag.get_text()
  return url_list

def download(down_url):
  try:
    m=re.search(reg,down_url[0])
    name = DOWNLOAD_URL % m.group(0)
    urllib.urlretrieve(name,createDirectory(down_url[1] + name[-4:]),schedule)
  except Exception, e:
    print e.message

def getpageurl(xUrl):
  # 进行列表页循环
  return [xUrl % page for page in xrange(1,49)]

if __name__ == '__main__':
  jobs = []
  pageurl = getpageurl('http://www.lanrentuku.com/js/p%s.html')
  # 爬取所有链接
  for i in pageurl:
    for k in geturllist(i).items():
      jobs.append(gevent.spawn(download, k))
  gevent.joinall(jobs)

Python批量下载懒人图库网站中所有JavaScript特效就是这样,欢迎大家参考。。。。

Python统计文件中单词出现的次数

Python统计文件中单词出现的次数是如何来实现的呢?下面的内容将会通过具体的实例来演示Python统计文件中单词出现的次数的实现方法及相关技巧:

最近在看python脚本语言,脚本语言是一种解释性的语言,不需要编译,可以直接用,由解释器来负责解释。python语言很强大,而且写起来很简洁。下面的一个例子就是用python统计单词出现的个数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sys
import string
#import collections

if len(sys.argv) == 1 or sys.argv[1] in {"-h", "--help"}:
 print("usage: uniqueword filename_1 filename_2 ... filename_n")
 sys.exit()
else:
 words = {}
 # words = collections.defaultdict(int)
 strip = string.whitespace + string.punctuation + string.digits + ""'"
 for filename in sys.argv[1:]:
 for line in open(filename):
  for word in line.split():
  word = word.strip(strip)
  if len(word) >= 2:
   words[word] = words.get(word, 0) + 1
   # words[word] += 1
 for word in sorted(words):
 print("'
{0}' occurs {1} times".format(word,words[word]))

假设文件名是 uniqueword.py,在命令行下输入: uniqueword.py filename_1 filename_2 … filename_n中单词出现的次数可以被统计出来。

第四行和第五行判断是否有输入参数,如果输入参数为空或者为-h, -help,则输出帮助信息。

从第七行到第14行是核心部分,逐一打开参数中指定的文件,并读取每一行,再用字符串的split方法把读取的行抽取出一个一个的单词,但单词长度大于2的时候,把此单词加入到字典words中。 其中words.get(word, 0)的意思是取出key等于word的value,如果key为空,则把value置为默认值0. 最后打印出结果。

Python统计文件中单词出现的次数就是这样,欢迎大家参考。。。。

Python使用Scrapy库爬取妹子图网站照片实例

Python使用Scrapy库爬取妹子图网站照片是如何来实现的呢?下面的内容将会通过具体的实例来演示Python使用Scrapy库爬取妹子图网站照片的实现方法及相关技巧:

函数是一组一起执行任务的语句。可以把代码放到独立的函数中。怎么划分代码功能之间的不同,但在逻辑上划分通常是让每个函数执行特定的任务。

Lua语言提供了程序可以调用大量的内置方法。例如,方法print()打印作为输入传参数在控制台中。

函数是已知的各种名称,如方法或子程序或程序等。

定义一个函数

在Lua编程语言中的方法的定义一般形式如下:

1
2
3
4
5
6
7
optional_function_scope function function_name( argument1, argument2, argument3..., argumentn)

function_body

return result_params_comma_separated

end

在 Lua 编程语言的方法定义包括方法头和方法体。这里是方法的所有部件

  • 可选函数适用范围:可以使用关键字本地范围的限制功能或忽略的范围部分,这将使它成为一个全局函数。
  • 函数名称:这是函数的实际名称。函数名和参数列表一起构成了函数签名。
  • 参数:一个参数是像占位符。当调用一个函数,将值传递给参数。这个值被称为实际参数或参数。参数列表是指类型,顺序和数量的方法的参数。参数是可选的;也就是说,方法可能没有参数。
  • 函数体:方法主体包含了定义方法做什么的语句的集合。
  • 返回:在Lua中可以通过下面的逗号分隔的返回值,return关键字返回多个值。

例子:

下面是一个函数的源代码调用max()。这个函数有两个参数num1与num2并返回两者之间的最大值:

1
2
3
--[[ function returning the max between two numbers --]]

function max(num1, num2)

if (num1 > num2) then

result = num1;

else

result = num2;

end

return result;

end

Python使用Scrapy库爬取妹子图网站照片就是这样,欢迎大家参考。。。。

Python基于smtplib实现异步发送邮件服务介绍

Python基于smtplib实现异步发送邮件服务是如何来实现的呢?下面的内容将会通过具体的实例来演示Python基于smtplib实现异步发送邮件服务的实现方法及相关技巧:

基于smtplib包制作而成,但在实践中发现一个不知道算不算是smtplib留的一个坑,在网络断开的情况下发送邮件时会抛出一个socket.gaierror的异常,但是smtplib中并没有捕获这个异常,导致程序会因这个异常终止,因此代码中针对这部分的异常进行处理,确保不会异常终止。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
#!/usr/bin/env python
# -*- coding: utf-8 -*-

__author__ = 'Zoa Chou'
# see http://www.mudoom.com/Article/show/id/29.html for detail

import logging
import smtplib
import mimetypes
import socket
from email import encoders
from email.header import Header
from email.mime.text import MIMEText, MIMENonMultipart
from email.mime.base import MIMEBase
from email.utils import parseaddr, formataddr


class Mailer(object):
  def __init__(self):
    pass

  def send_mail(self, smtp_server, from_address, to_address, subject, body, files=None):
    """
    发送邮件主程序
    :param smtp_server: dict 邮件服务器设置
      :keyword host: string smtp服务器地址
      :keyword port: int smtp服务器端口号
      :keyword user: string 用户名
      :keyword passwd: string 密码
      :keyword ssl: bool 是否启用ssl,默认False
      :keyword timeout: int 超时时间,默认10s
    :param from_address: 发件人邮箱
    :param to_address: 收件人邮箱
    :param subject: 邮件标题
    :param body: 邮件内容
    :param files: 附件
    :raise: NetworkError/MailerException
    """

    # 格式化邮件内容
    body = self._encode_utf8(body)
    # 邮件类型
    content_type = 'html' if body.startswith('<html>') else 'plain'
    msg = MIMENonMultipart() if files else MIMEText(body, content_type, 'utf-8')
    # 格式化邮件数据
    msg['From'] = self._format_address(from_address)
    msg['To'] = ', '.join(self._format_list(to_address))
    msg['subject'] = self._encode_utf8(subject)

    # 构造附件数据
    if files:
      msg.attach(MIMEText(body, content_type, 'utf-8'))
      cid = 0
      for file_name, payload in files:
        file_name = self._encode_utf8(file_name)
        main_type, sub_type = self._get_file_type(file_name)
        if hasattr(payload, 'read'):
          payload = payload.read()
        f_name = self._encode_header(file_name)
        mime = MIMEBase(main_type, sub_type, filename=f_name)
        mime.add_header('Content-Disposition', 'attachment', filename=f_name)
        mime.add_header('Content-ID', '<%s>' % cid)
        mime.add_header('X-Attachment-Id', '%s' % cid)
        mime.set_payload(payload)
        encoders.encode_base64(mime)
        msg.attach(mime)
        cid += 1

    host = smtp_server.get('host')
    port = smtp_server.get('port')
    user = smtp_server.get('user')
    passwd = smtp_server.get('passwd')
    ssl = smtp_server.get('ssl', False)
    time_out = smtp_server.get('timeout', 10)

    # 没有输入端口则使用默认端口
    if port is None or port == 0:
      if ssl:
        port = 465
      else:
        port = 25

    logging.debug('Send mail form %s to %s' % (msg['From'], msg['To']))

    try:
      if ssl:
        # 开启ssl连接模式
        server = smtplib.SMTP_SSL('%s:%d' % (host, port), timeout=time_out)
      else:
        server = smtplib.SMTP('%s:%d' % (host, port), timeout=time_out)
      # 开启调试模式
      # server.set_debuglevel(1)

      # 如果存在用户名密码则尝试登录
      if user and passwd:
        server.login(user, passwd)

      # 发送邮件
      server.sendmail(from_address, to_address, msg.as_string())

      logging.debug('Mail sent success.')

      # 关闭stmp连接
      server.quit()

    except socket.gaierror, e:
      """ 网络无法连接 """
      logging.exception(e)
      raise NetworkError(e)

    except smtplib.SMTPServerDisconnected, e:
      """ 网络连接异常 """
      logging.exception(e)
      raise NetworkError(e)

    except smtplib.SMTPException, e:
      """ 邮件发送异常 """
      logging.exception(e)
      raise MailerException(e)

  def _format_address(self, s):
    """
    格式化邮件地址
    :param s:string 邮件地址
    :return: string 格式化后的邮件地址
    """

    name, address = parseaddr(s)
    return formataddr((self._encode_header(name), self._encode_utf8(address)))

  def _encode_header(self, s):
    """
    格式化符合MIME的头部数据
    :param s: string 待格式化数据
    :return: 格式化后的数据
    """

    return Header(s, 'utf-8').encode()

  def _encode_utf8(self, s):
    """
    格式化成utf-8编码
    :param s: string 待格式化数据
    :return: string 格式化后的数据
    """

    if isinstance(s, unicode):
      return s.encode('utf-8')
    else:
      return s

  def _get_file_type(self, file_name):
    """
    获取附件类型
    :param file_name: 附件文件名
    :return: dict 附件MIME
    """

    s = file_name.lower()
    pos = s.rfind('.')
    if pos == -1:
      return 'application', 'octet-stream'

    ext = s[pos:]
    mime = mimetypes.types_map.get(ext, 'application/octet-stream')
    pos = mime.find('/')
    if pos == (-1):
      return mime, ''
    return mime[:pos], mime[pos+1:]

  def _format_list(self, address):
    """
    将收件人地址格式化成list
    :param address: string/list 收件人邮箱
    :return: list 收件人邮箱list
    """

    l = address
    if isinstance(l, basestring):
      l = [l]
    return [self._format_address(s) for s in l]


class MailerException(Exception):
  """ 邮件发送异常类 """
  pass


class NetworkError(MailerException):
  """ 网络异常类 """
  pass

# test for @qq.com
if __name__ == '__main__':
  import sys

  def prompt(prompt):
    """
    接收终端输入的数据
    """

    sys.stdout.write(prompt + ": ")
    return sys.stdin.readline().strip()

  from_address = prompt("From(Only @qq.com)")
  passwd = prompt("Password")
  to_address = prompt("To").split(',')
  subject = prompt("Subject")
  print "Enter message, end with ^D:"
  msg = ''
  while 1:
    line = sys.stdin.readline()
    if not line:
      break
    msg = msg + line
  print "Message length is %d" % len(msg)
  # QQ邮箱默认设置
  smtp_server = {'host': 'smtp.qq.com', 'port': None, 'user': from_address, 'passwd': passwd, 'ssl': True}
  mailer = Mailer()

  try:
    mailer.send_mail(smtp_server, from_address, to_address, subject, msg)
  except MailerException, e:
    print(e)

Python基于smtplib实现异步发送邮件服务就是这样,欢迎大家参考。。。。

Python中使用smallseg分词详细介绍

Python中使用smallseg分词是如何来使用的呢?下面的内容将会通过具体的实例来演示Python中使用smallseg分词的使用方法及相关技巧:

本文实例讲述了Python smallseg分词用法。分享给大家供大家参考。具体分析如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#encoding=utf-8
#import psyco
#psyco.full()
words = [x.rstrip() for x in open("main.dic",mode='r',encoding='utf-8') ]
from smallseg import SEG
seg = SEG()
print('Load dict...')
seg.set(words)
print("Dict is OK.")
def cuttest(text):
  wlist = seg.cut(text)
  wlist.reverse()
  tmp = " ".join(wlist)
  print(tmp)
  print("================================")
if __name__=="__main__":
  cuttest("这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。")
  cuttest("我不喜欢日本和服。")
  cuttest("雷猴回归人间。")
  cuttest("工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作")
  cuttest("我需要廉租房")
  cuttest("永和服装饰品有限公司")
  cuttest("我爱北京天安门")
  cuttest("abc")
  cuttest("隐马尔可夫")
  cuttest("雷猴是个好网站")
  cuttest("“Microsoft”一词由“MICROcomputer(微型计算机)”和“SOFTware(软件)”两部分组成")
  cuttest("草泥马和欺实马是今年的流行词汇")
  cuttest("伊藤洋华堂总府店")
  cuttest("中国科学院计算技术研究所")
  cuttest("罗密欧与朱丽叶")
  cuttest("我购买了道具和服装")

smallseg分词,在python3.3上运行稍微有些问题。py代码xrange在3.*中已经改名字为range了。另外,3.*中也没有decode函数了。

修改了上面的两个地方,代码就可移植性了。效果还可以。

Python中使用smallseg分词就是这样,欢迎大家参考。。。。

Python使用Supervisor来管理进程的方法

Python使用Supervisor来管理进程是如何来实现的呢?下面的内容将会通过具体的实例来演示Python使用Supervisor来管理进程的实现方法及相关技巧:

本文实例讲述了Python使用Supervisor来管理进程的方法。分享给大家供大家参考。具体分析如下:

Supervisor可以启动、停止、重启*nix系统中的程序。也可以重启崩溃的程序。

supervisord的一个守护进程,用于将指定的进程当做子进程来运行。

supervisorctl是一个客户端程序,可以查看日志并通过统一的会话来控制进程。

看例子:

我们写了一个py脚本,用于往log文件中记录一条当前的时间。

1
2
3
4
5
6
7
8
9
10
root@ubuntu:/home/zoer# cat daemon.py
#!/usr/bin/env python
import time
import os
time.sleep(1)
f=open("log",'a')
t=time.time()
f.write(str(t))
f.write("n")
f.close()

安装过程就不说了。

安装完毕supervisor之后【将配置文件放在/etc下】。修改配置文件,在最后增加如下内容:

[program:ddd]

command=/home/zoer/daemon.py

autorestart=true

然后我们启动supervisor并启动daemon.py的执行。

1
2
3
4
5
6
7
8
9
10
11
12
root@ubuntu:/home/zoer# supervisord
/usr/local/lib/python2.7/dist-packages/supervisor-3.0b1-py2.7.egg/supervisor/options.py:286: UserWarning: Supervisord is running as root and it is searching for its configuration file in default locations (including its current working directory); you probably want to specify a "-c" argument specifying an absolute path to a configuration file for improved security.
 'Supervisord is running as root and it is searching '
root@ubuntu:/home/zoer# supervisorctl
ddd               STARTING
supervisor> start ddd
ddd: ERROR (already started)
supervisor> stop ddd
ddd: stopped
supervisor> start ddd
ddd: started
supervisor>

从上面的例子中,看到,可以通过start或者stop命令来启动或者停止ddd这个进程。ddd这里就是我们在配置文件中增加的内容(daemon.py这个脚本)。

也可以使用restart。如下:

supervisor> restart ddd

ddd: stopped

ddd: started

下面我们测试一下,假设说我们手动kill掉了ddd这个进程,那么ddd会自动恢复执行吗?

为了做实验,把代码修改如下:

1
2
3
4
5
6
7
8
9
10
11
root@ubuntu:/home/zoer# cat daemon.py
#!/usr/bin/env python
import time
import os
while True:
  time.sleep(1)
  f=open("log",'a')
  t=time.time()
  f.write(str(t))
  f.write("n")
  f.close()

通过ps可以找到这个进程的id:

1
2
3
root   9354 0.2 0.4 10924 4200 &#63;    S  23:16  0:00 python /home/zoer/daemon.py
root   9395 0.0 0.0  4392  832 pts/3  S+  23:17  0:00 grep --color=auto daemon
root@ubuntu:/home/zoer#

看下面的操作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
root@ubuntu:/home/zoer# rm log;touch log;kill 9354
root@ubuntu:/home/zoer# cat log
1364710712.51
root@ubuntu:/home/zoer# cat log
1364710712.51
1364710713.51
root@ubuntu:/home/zoer# cat log
1364710712.51
1364710713.51
root@ubuntu:/home/zoer# cat log
1364710712.51
1364710713.51
1364710714.52
root@ubuntu:/home/zoer# cat log
1364710712.51
1364710713.51
1364710714.52
1364710715.52

删除了log文件,并且重新创建。然后干掉了daemon.py的那个进程。会发现log内容又重新有新的内容了。再次ps查看进程号。

1
2
3
root   9429 0.1 0.4 10924 4200 &#63;    S  23:18  0:00 python /home/zoer/daemon.py
root   9440 0.0 0.0  4392  828 pts/3  S+  23:19  0:00 grep --color=auto daemon
root@ubuntu:/home/zoer#

会发现进程号已经变成9429了。说明supervisor已经重启了被干掉了的进程。

Python使用Supervisor来管理进程就是这样,欢迎大家参考。。。。