设为首页 收藏本站
查看: 1381|回复: 0

[经验分享] python实例31[My Stock Info]

[复制链接]

尚未签到

发表于 2015-4-27 09:53:41 | 显示全部楼层 |阅读模式
  
  本程序使用python3.1实现的一个运行于Windows的控制台小程序,用来显示你所关心的股票的实时价格。
  1)每隔一分钟跟新一次,当然你可以改为更短的时间间隔;
  2)控制台彩色显示的python模块为WConio,需要单独下载:http://newcenturycomputers.net/projects/wconio.html
  3)webservice来源于sina,感谢sina,例如http://hq.sinajs.cn/list=sh600547, 返回的结果如下:


var hq_str_sh600547="山东黄金,51.02,51.00,52.71,52.86,50.68,52.70,52.72,16389139
,850524809,3000,52.70,52500,52.69,100,52.67,28849,52.66,7400,52.65,1200,52.72,43
77,52.75,11200,52.76,20000,52.77,4000,52.78,2010-12-31,15:02:06";
  
  
  4) 也可以使用其他的股票web service (http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx/getStockInfoByCode?theStockCode=sh600547),返回的结果如下:



-
  sh600547
  山东黄金
  2011-01-04 14:46:20
  53.15
  52.71
  53.18
  0.44
  52.77
  53.79
  0.83%
  138375.48
  73669.8408
  53.15
  53.16
  -48.30%
  53.15 / 94.00
  53.13 / 11.00
  53.12 / 11.00
  53.11 / 6.00
  53.10 / 304.00
  53.16 / 30.70
  53.17 / 265.65
  53.18 / 481.99
  53.19 / 194.00
  53.20 / 249.50
    
  
  程序:(Mystockinfo.py)


import urllib.request
class Utility:
    def ToGB(str):
        return str.decode('gb2312')
   
    def ReadStocksToArray(file):
        file = open(file, 'r')
        stocks = []
        if file:
            for line in file:
                stocks.append(line.rstrip("\n"))
            file.close()
        else:
            print ("Error Opening File.")
        return stocks
        
class ColorConsole:
    def PrintStockInfoTitle():
        import datetime
        print(datetime.datetime.now())   
        print("Name".ljust(10) + "ID".ljust(10) + "CurrentPrice".ljust(20) + "Percent".ljust(10))  
        print('*****************************************************')
    def PrintStockInfoTitleWithColor():
        import WConio
        WConio.settitle("My Stock Info")
        WConio.clrscr()
        ColorConsole.PrintStockInfoTitle()
        
    def PrintStockInfoItem(stockitem):
        print(stockitem[0].ljust(10) + str(stockitem[1]).ljust(10) +  str(stockitem[2]).ljust(20) + str(stockitem[3]).ljust(10))
    def PrintStockInfoItemWithColor(stockitem):
        import WConio
        WConio.textcolor(WConio.WHITE)
        if(stockitem[3]> 0.0):
            WConio.textcolor(WConio.RED)
            ColorConsole.PrintStockInfoItem(stockitem)
        else:
            WConio.textcolor(WConio.GREEN)
            ColorConsole.PrintStockInfoItem(stockitem)
        WConio.textcolor(WConio.WHITE)
            
class StockInfo:        
    def GetStockStrByNum(num):
        f = urllib.request.urlopen('http://hq.sinajs.cn/list='+ str(num))
        stockstr = ""
        if f:
            stockstr = f.readline()
            f.close()
        return  stockstr  
               
    def ParseStockStr(stockstr):
        stockitem = []
        id = stockstr[13:19]
        slist=stockstr.split(',')
        name=slist[0][-4:]
        yesterdayendprice=slist[2]
        nowprice=slist[3]
        upgraderate=(float(nowprice)-float(yesterdayendprice))/float(yesterdayendprice)
        upgraderate= upgraderate * 100
        stockitem.append(name)
        stockitem.append(id)
        stockitem.append(nowprice)
        stockitem.append(upgraderate)
        return stockitem
              
    def GetStockInfo(num):
        str=StockInfo.GetStockStrByNum(num)
        strGB=Utility.ToGB(str)
        return StockInfo.ParseStockStr(strGB)      
def RunWithOutColor():     
    stocks = Utility.ReadStocksToArray('Stocks.txt')
    ColorConsole.PrintStockInfoTitle()
    for stock in stocks:
        s = StockInfo.GetStockInfo(stock)
        ColorConsole.PrintStockInfoItem(s)
        
def RunWithColor():
    stocks = Utility.ReadStocksToArray('Stocks.txt')
    ColorConsole.PrintStockInfoTitleWithColor()
    for stock in stocks:
        s = StockInfo.GetStockInfo(stock)
        ColorConsole.PrintStockInfoItemWithColor(s)
def Main():
    while(1):
        #RunWithOutColor()
        RunWithColor()
        import time
        time.sleep(60)
Main()
  
  数据输入: (stocks.txt 此文件需要跟Mystockinfo.py在统一目录下,你可以自由的增加自己关注的股票代码)


sh601601
sh600547
sz300027
sh600196
sz002299
sh601766  
  运行结果:
DSC0000.png
  
  运行: (MyStockInfo.bat 双击此文件即可运行了,或者还可以对此文件创建桌面快捷方式,再桌面上直接运行)


c:\python31\python.exe mystock.py
  
  如果希望在python2.6下运行,则需要
  1)在所有的类的静态函数前加上   @staticmethod  ;
  2) 修改urllib.request为urllib2;

  
  希望大家能够继续改进和共享!
  
  完!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-61075-1-1.html 上篇帖子: Python 学习:今天写了一个简单的定时任务 下篇帖子: python: string的操作函数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表