第二十二章、 其它应用
1)    Web服务

##代码  s     000063.SZ 
##开盘  o     26.60 
##最高  h     27.05 
##最低  g     26.52 
##最新  l1    26.66 
##涨跌  c1    -0.04 
##涨幅  p2    -0.15% 
##总手  v     9190865 
##日期  d1    6/15/2011 
##时间  t1    3:00am  

#!/usr/bin/env python  

from time import ctime 
from urllib import urlopen 
import re  

ticks = ('000063.sz', '600001.ss', '010110.ss', '000005.sz', 
         '300003.SZ', '000100.sz', '600519.ss', '900950.SS') 
URL = 'http://quote.yahoo.com/d/quotes.csv?s=%s&f=sohgl1v' 

print 'Prices quoted as of:', ctime() 
print  u'\n代码'.rjust(1), u'开盘'.rjust(6), u'最高'.rjust(4), \ 
         u'最低'.rjust(4), u'现价'.rjust(4), u'总手'.rjust(7) 
u = urlopen(URL % ','.join(ticks))  

for row in u: 
    name, openp, high, low, close, volume = row.split(',') 
    print  (re.search('[0-9]{6}', name).group()).rjust(6), \ 
           (re.search('\d+\.\d{2}|N/A', openp).group()).rjust(6), \ 
           (re.search('\d+\.\d{2}|N/A', high).group()).rjust(6), \ 
           (re.search('\d+\.\d{2}|N/A', low).group()).rjust(6), \ 
           (re.search('\d+\.\d{2}|N/A', close).group()).rjust(6), \ 
           (re.search('[0-9]+|N/A', volume).group()).rjust(9) 
u.close()  

2)    COM编程
安装pywin32(pywin32-216.win32-py2.7.exe)
下载http://sourceforge.net/projects/pywin32/files/pywin32/

#!/usr/bin/env python  

from Tkinter import Tk 
from time import sleep 
from tkMessageBox import showwarning 
import win32com.client as win32  

warn = lambda app: showwarning(app, 'Exit?') 
RANGE = range(3, 8)  

def word(): 
    app = 'Word' 
    word = win32.gencache.EnsureDispatch('%s.Application' % app) 
    doc = word.Documents.Add() 
    word.Visible = True 
    sleep(1)  

    rng = doc.Range(0,0) 
    rng.InsertAfter('Python-to-%s Test\r\n\r\n' % app) 
    sleep(1) 
    for i in RANGE: 
        rng.InsertAfter('Line %d\r\n' % i) 
        sleep(1) 
    rng.InsertAfter("\r\nTh-th-th-that's all folks!\r\n")  

    warn(app) 
    doc.Close(False) 
    word.Application.Quit()  

if __name__=='__main__': 
    Tk().withdraw() 
    word()
#!/usr/bin/env python (estock.pyw)  

from Tkinter import Tk 
from time import sleep, ctime 
from tkMessageBox import showwarning 
from urllib import urlopen 
import win32com.client as win32  

warn = lambda app: showwarning(app, 'Exit?') 
RANGE = range(3, 8) 
TICKS = ('YHOO', 'GOOG', 'EBAY', 'AMZN') 
COLS = ('TICKER', 'PRICE', 'CHG', '%AGE') 
URL = 'http://quote.yahoo.com/d/quotes.csv?s=%s&f=sl1c1p2' 

def excel(): 
    app = 'Excel' 
    xl = win32.gencache.EnsureDispatch('%s.Application' % app) 
    ss = xl.Workbooks.Add() 
    sh = ss.ActiveSheet 
    xl.Visible = True 
    sleep(1)  

    sh.Cells(1, 1).Value = 'Python-to-%s Stock Quote Demo' % app 
    sleep(1) 
    sh.Cells(3, 1).Value = 'Prices quoted as of: %s' % ctime() 
    sleep(1) 
    for i in range(4): 
        sh.Cells(5, i+1).Value = COLS[i] 
    sleep(1) 
    sh.Range(sh.Cells(5, 1), sh.Cells(5, 4)).Font.Bold = True 
    sleep(1) 
    row = 6  

    u = urlopen(URL % ','.join(TICKS)) 
    for data in u: 
        tick, price, chg, per = data.split(',') 
        sh.Cells(row, 1).Value = eval(tick) 
        sh.Cells(row, 2).Value = '%.2f' % round(float(price), 2) 
        sh.Cells(row, 3).Value = chg 
        sh.Cells(row, 4).Value = eval(per.rstrip()) 
        row += 1 
        sleep(1) 
    u.close()  

    warn(app) 
    ss.Close(False) 
    xl.Application.Quit()  

if __name__=='__main__': 
    Tk().withdraw() 
    excel() 
#!/usr/bin/env python 

from Tkinter import Tk 
from time import sleep 
from tkMessageBox import showwarning 
import win32com.client as win32 

warn = lambda app: showwarning(app, 'Exit?') 
RANGE = range(3, 8) 

def ppoint(): 
    app = 'PowerPoint' 
    ppoint = win32.gencache.EnsureDispatch('%s.Application' % app) 
    pres = ppoint.Presentations.Add() 
    ppoint.Visible = True 

    s1 = pres.Slides.Add(1, win32.constants.ppLayoutText) 
    sleep(1) 
    s1a = s1.Shapes[0].TextFrame.TextRange 
    s1a.Text = 'Python-to-%s Demo' % app 
    sleep(1) 
    s1b = s1.Shapes[1].TextFrame.TextRange 
    for i in RANGE: 
        s1b.InsertAfter("Line %d\r\n" % i) 
        sleep(1) 
    s1b.InsertAfter("\r\nTh-th-th-that's all folks!") 

    warn(app) 
    pres.Close() 
    ppoint.Quit() 

if __name__=='__main__': 
    Tk().withdraw() 
    ppoint() 
#!/usr/bin/env python 

from Tkinter import Tk 
#from time import sleep    # SUPERFLUOUS 
from tkMessageBox import showwarning 
import win32com.client as win32 

warn = lambda app: showwarning(app, 'Exit?') 
RANGE = range(3, 8) 

def outlook(): 
    app = 'Outlook' 
    olook = win32.gencache.EnsureDispatch('%s.Application' % app) 

    mail = olook.CreateItem(win32.constants.olMailItem) 
    recip = mail.Recipients.Add('hello@msn.com') 
    subj = mail.Subject = 'Python-to-%s Demo' % app 
    body = ["Line %d" % i for i in RANGE] 
    body.insert(0, '%s\r\n' % subj) 
    body.append("\r\nTh-th-th-that's all folks!") 
    mail.Body = '\r\n'.join(body) 
    mail.Send() 

    ns = olook.GetNamespace("MAPI") 
    obox = ns.GetDefaultFolder(win32.constants.olFolderOutbox) 
    obox.Display() 
    obox.Items.Item(1).Display() 

    warn(app) 
    olook.Quit() 
olook = outlook 

if __name__=='__main__': 
    Tk().withdraw() 
    outlook() 

python 教程 第二十二章、 其它应用的更多相关文章

  1. Flask 教程 第二十二章:后台作业

    本文翻译自The Flask Mega-Tutorial Part XXII: Background Jobs 这是Flask Mega-Tutorial系列的第二十二部分,我将告诉你如何创建独立于W ...

  2. python 教程 第十二章、 标准库

    第十二章. 标准库 See Python Manuals ? The Python Standard Library ? 1)    sys模块 import sys if len(sys.argv) ...

  3. C#图解教程 第二十二章 异常

    异常 什么是异常try语句 处理异常 异常类catch 子句使用特定catch子句的示例catch子句段finally块为异常寻找处理程序更进一步搜索 一般法则搜索调用栈的示例 抛出异常不带异常对象的 ...

  4. 进击的Python【第二十二章】

    day22 知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 内容详细: 1. Session 基于Cookie ...

  5. 第二十二章 Django会话与表单验证

    第二十二章 Django会话与表单验证 第一课 模板回顾 1.基本操作 def func(req): return render(req,'index.html',{'val':[1,2,3...]} ...

  6. 《Linux命令行与shell脚本编程大全》 第二十二章 学习笔记

    第二十二章:使用其他shell 什么是dash shell Debian的dash shell是ash shell的直系后代,ash shell是Unix系统上原来地Bourne shell的简化版本 ...

  7. Gradle 1.12用户指南翻译——第二十二章. 标准的 Gradle 插件

    其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Github上的地址: https://g ...

  8. “全栈2019”Java多线程第二十二章:饥饿线程(Starvation)详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  9. “全栈2019”Java异常第二十二章:try-with-resources语句详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...

随机推荐

  1. POJ 1562 Oil Deposits (HDU 1241 ZOJ 1562) DFS

    现在,又可以和她没心没肺的开着玩笑,感觉真好. 思念,是一种后知后觉的痛. 她说,今后做好朋友吧,说这句话的时候都没感觉.. 我想我该恨我自己,肆无忌惮的把她带进我的梦,当成了梦的主角. 梦醒之后总是 ...

  2. android开发音乐播放器--Genres和Art album的获取

    最近在做一个项目,其中涉及到音乐播放器.当用到Genres和Art album时花费了一些时间才搞定,今天把方法草草列出,以供自己以后忘记时查看,也希望可以帮助碰到同样问题的道友!! 一.Genres ...

  3. js课程 1-5 js如何测试变量的数据类型

    js课程 1-5 js如何测试变量的数据类型 一.总结 一句话总结:用typeof()方法. 1.js如何判断变量的数据类型? 用typeof()方法. 13 v=10; 14 15 if(typeo ...

  4. [GraphQL] Write a GraphQL Mutation

    In order to change the data that we can query for in a GraphQL Schema, we have to define what is cal ...

  5. vs 2013 常用快捷键及常见问题的解决

    1. 代码编辑 关闭当前文档:ctrl + F4 打开光标所在位置的文档:ctrl + G(shift + g) 返回上次编辑的位置:ctrl + -(键盘数字键 0 后的那个按键) 移动光标所在的行 ...

  6. js进阶 11-1 jquery中的页面内容操作的三个方法

    jquery中的页面内容操作的三个方法 一.总结 一句话总结:记三个方法即可.text,html,val.因为这里是方法,所以设置值的是后面方法的参数. 1.jquery中的页面内容操作的三个方法? ...

  7. [Ramda] R.project -- Select a Subset of Properties from a Collection of Objects in Ramda

    In this lesson we'll take an array of objects and map it to a new array where each object is a subse ...

  8. [SVG] Optimize SVGs for Better Performance using svgo

    Just like a bitmap image, you can compress an SVG by removing various pieces of code that aren’t nec ...

  9. erlang 游戏服务器开发

    http://blog.csdn.net/slmeng2002/article/details/5532771 最近关注erlang游戏服务器开发  erlang大牛写的游戏服务器值得参考 介绍本文以 ...

  10. prettytensor 的使用

    prettytensor 顾名思义,对原始的 tensorflow 下的 tensor 进行封装(prettytensor 以 tensorflow 为基础,二者搭配使用),使其成为一个更为接口友好的 ...