用python -i写交互式shell


cabinet是公司的一个数据存储服务,需要添加一个shell client,查看数据,做简单操作。

用python写了一个比想象的简单。代码如下:


[python]
#! /usr/bin/python -i  
# coding: utf-8  
 
 
import sys 
import os 
 
 
dirname = os.path.dirname(sys.argv[0]) 
sys.path.append(dirname + '/gen-py')  
sys.path.append('/usr/lib/python2.7/site-packages') 
from cabinet import CabinetStorage 
from document.ttypes import Document 
from thrift import Thrift 
from thrift.transport import TSocket 
from thrift.transport import TTransport 
from thrift.protocol import TCompactProtocol 
from optparse import OptionParser 
 
 
# avoid UnicodeDecodeError  
reload(sys) 
sys.setdefaultencoding( "utf-8" ) 
 
 
try: 
  # command line arguments.  
  parser = OptionParser(usage="usage: %prog [options]", version="%prog 1.0") 
  parser.add_option("-c", "--host", dest = "host", action = "store", default = "127.0.0.1", type = "string", help = "Specify cabinet host.") 
  parser.add_option("-p", "--port", dest = "port", action = "store", default = 9090, type = "int", help = "Specify cabinet port.") 
  (options, args) = parser.parse_args() 
 
 
  # connect to cabinet server.  
  transport = TSocket.TSocket(options.host, options.port)   
  transport = TTransport.TBufferedTransport(transport)   
  protocol = TCompactProtocol.TCompactProtocol(transport)   
  client = CabinetStorage.Client(protocol) 
  transport.open() 
except Exception as e: 
  print e 
  os._exit(1) 
 
 
# welcome info.  
print "Cabinet Shell V1.0, Copyright i-MD 2013, All rights reserved." 
print "For usage, invoke help().\n" 
 
 
# main functions.  
def help(): 
  print "Main functions:" 
  print "  get(db, id)" 
  print "  set(db, id, val)" 
  print "  delete(db, id)" 
  print "  unpackDocInfo(docstr)" 
  print "  packDocInfo(doc)" 
 
 
def get(db, id): 
  return client.Get(db, id)  
 
 
def set(db, id, val): 
  return client.Set(db, id, val) 
 
 
def delete(db, id): 
  return client.delete(db, id) 
 
 
def packDocInfo(doc): 
  transportOut = TTransport.TMemoryBuffer() 
  protocolOut = TCompactProtocol.TCompactProtocol(transportOut) 
  doc.write(protocolOut) 
  return transportOut.getvalue() 
 
 
def unpackDocInfo(docstr): 
  transportIn = TTransport.TMemoryBuffer(docstr) 
  protocolIn = TCompactProtocol.TCompactProtocol(transportIn) 
  doc = Document() 
  doc.read(protocolIn) 
  return doc 

#! /usr/bin/python -i
# coding: utf-8


import sys
import os


dirname = os.path.dirname(sys.argv[0])
sys.path.append(dirname + '/gen-py')
sys.path.append('/usr/lib/python2.7/site-packages')
from cabinet import CabinetStorage
from document.ttypes import Document
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocol
from optparse import OptionParser


# avoid UnicodeDecodeError
reload(sys)
sys.setdefaultencoding( "utf-8" )


try:
  # command line arguments.
  parser = OptionParser(usage="usage: %prog [options]", version="%prog 1.0")
  parser.add_option("-c", "--host", dest = "host", action = "store", default = "127.0.0.1", type = "string", help = "Specify cabinet host.")
  parser.add_option("-p", "--port", dest = "port", action = "store", default = 9090, type = "int", help = "Specify cabinet port.")
  (options, args) = parser.parse_args()


  # connect to cabinet server.
  transport = TSocket.TSocket(options.host, options.port) 
  transport = TTransport.TBufferedTransport(transport) 
  protocol = TCompactProtocol.TCompactProtocol(transport) 
  client = CabinetStorage.Client(protocol)
  transport.open()
except Exception as e:
  print e
  os._exit(1)


# welcome info.
print "Cabinet Shell V1.0, Copyright i-MD 2013, All rights reserved."
print "For usage, invoke help().\n"


# main functions.
def help():
  print "Main functions:"
  print "  get(db, id)"
  print "  set(db, id, val)"
  print "  delete(db, id)"
  print "  unpackDocInfo(docstr)"
  print "  packDocInfo(doc)"


def get(db, id):
  return client.Get(db, id)


def set(db, id, val):
  return client.Set(db, id, val)


def delete(db, id):
  return client.delete(db, id)


def packDocInfo(doc):
  transportOut = TTransport.TMemoryBuffer()
  protocolOut = TCompactProtocol.TCompactProtocol(transportOut)
  doc.write(protocolOut)
  return transportOut.getvalue()


def unpackDocInfo(docstr):
  transportIn = TTransport.TMemoryBuffer(docstr)
  protocolIn = TCompactProtocol.TCompactProtocol(transportIn)
  doc = Document()
  doc.read(protocolIn)
  return doc


 

相关内容

    暂无相关文章

评论关闭