光环大数据培训 实现服务器数据采集脚本技术点总结

编辑:光环大数据 来源: 互联网 时间: 2017-11-20 18:08 阅读:

一、从别的目录导入模块的两种方式

 

方式一、 

 

1

2

    sys.path.append(“想要导入的文件的存放目录”)

    import 模块名

    

方式二、

        

在文件夹建立一个空文件__init__.py文件,使文件夹变为一个包;然后使用os模块调整此文件所在的路径,使其在所要访问的包的上一级目录

 

1

2

    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

    sys.path.append(BASE_DIR)

                

然后就可以导入所想要导入的模块了

 

 

 

二、python操作mysql数据库

 

1

  import MySQLdb

   

 1、对数据库执行增、删、改操作   

 

1

2

3

4

5

6

7

8

9

10

11

    def exec_curr(sql):

        try:

        #打开数据库连接

      cnn=MySQLdb.connect(host=host,port=port,user=db_user,passwd=db_passwd,charset='utf8',db=db)

      #使用cursor()方法获取操作游标

      cur=cnn.cursor()

      #使用execute方法执行SQL语句

      cur.execute(sql)

      cnn.commit()

    except MySQLdb.Error,e:

      print e

   

 2、对数据库执行查询操作

 

1

2

3

4

5

6

7

8

9

10

11

12

13

    def connet_curr(host=host,port=port,db=db,db_user=db_user,db_passwd=db_passwd,sql="select ip from nosql_ip"):

        result=[]

    try:

        cnn=MySQLdb.connect(host=host,port=port,user=db_user,passwd=db_passwd,charset='utf8',db=db)

        cur = cnn.cursor()

        cur.execute(sql)

        #获取所有记录列表

        rows=cur.fetchall()

        for row in rows:

            result.append(row)

        return result

    except MySQLdb.Error,e:

        print e

 

 

 

 

三、python的序列化和反序列化

 

在做数据采集的时候,用到了公司其他部门同事做好的api,从api取到的数据为字符串格式,需要通过loads转换一下,成为字典格式以方便操作(当然,这里不转化为字典的话,可以使用操作字符串的方式进行操作,但使用字典方式更加方便和准确)

   

 1、可以使用pickle模块

 

1

2

    pickle.dumps(dic)

    pickle.loads(byte_data)

    2、可以使用json模块(我这里用到的是json)

1

2

    str = json.dumps(dic)

    dic_obj = json.loads(dic_str)

 

 

 

四、操作字典的方式方法(字典是无序的,字典的key必须唯一)

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

  假设字典为 info = {'staff1'"小明",'staff2'"小红",'staff3'"小李"}

    1、增加操作

        info['staff4'= “小刘”

    2、修改操作

        info['staff3'= "小樊"

    3、删除操作

          1)info.pop("staff1")

      2del info['staff3']

    4、查询操作

      1"staff2" in info

      2)info.get("staff2")  如果一个key不存在,只返回None

      3)info["staff2"]   如果一个key不存在,就报错

    5、嵌套字典的查询只需要 :字典名[ ][ ] . . .

    6、循环字典

     1for key in info:

          print(key,info[key])

     2for k,v in info.items(): #会先把dict转成list

         print(k,v)

 

 

 


五、通过ssh连接到其他服务器执行命令的方法

 

1

2

3

4

5

6

7

    def    ssh_execute_shell(host,command):                                  

      ssh_shell = '''/usr/bin/ssh -n -i 跳板机的私钥地址 -p 26387 -o '''

              '''StrictHostKeyChecking=no -o ConnectTimeout=2 root@'%s' '''

              ''' "%s" ''' % (host, command))

        p=subprocess.Popen(ssh_shell,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)

        out = p.communicate()

        return out

 

 

六、python的多进程

    

1、多进程使用模块

 

1

2

3

4

5

6

7

8

9

    from multiprocessing import Process

  import time

  def f(name):

      time.sleep(2)

    print('hello', name)

  if __name__ == '__main__':

      = Process(target=f, args=('process1',))

    p.start()

    p.join()

   

 2、由于进程间内存不共享,进程间共享数据的方式有以下几种

 

        Queues(消息队列)

        Pipes(管道)

        Managers

    

3、进程池

 

1

2

3

4

5

6

7

8

9

10

11

    from multiprocessing import Process,Pool

  import time

  def Foo(i):

      time.sleep(2)

      return i+100

  pool = Pool(5)

  for in range(10):

      pool.apply_async(func=Foo, args=(i,))

      #pool.apply(func=Foo, args=(i,))

  pool.close()

  pool.join()#进程池中进程执行完毕后再关闭,如果注释,那么程序直接关闭。

 

 


七、使用python发邮件

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

    import smtplib

  from email.MIMEText import MIMEText

  mailto_list = ["收件人用户名@staff.sina.com.cn"]

  mail_host = "mail.staff.sina.com.cn"

  mail_user = "发件人用户名"

  mail_pass = "发件人邮箱密码"

  mail_postfix = "staff.sina.com.cn"

  def send_mail(to_list, sub, content):

    me = "hello" + "<" + mail_user + "@" + mail_postfix + ">"

    msg = MIMEText(content, _subtype='html', _charset='UTF-8')

    msg['Subject'= sub

    msg['From'= me

    msg['To'= ";".join(to_list)

    try:

      = 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 as e:

      print str(e)

      return False

 

  大数据培训哪家好大数据培训靠谱吗大数据培训排行榜大数据培训费用大数据培训多少钱等相关问题,欢迎咨询光环大数据官网在线客服:hadoop.aura.cn

 


大数据培训、人工智能培训、Python培训、大数据培训机构、大数据培训班、数据分析培训、大数据可视化培训,就选光环大数据!光环大数据,聘请专业的大数据领域知名讲师,确保教学的整体质量与教学水准。讲师团及时掌握时代潮流技术,将前沿技能融入教学中,确保学生所学知识顺应时代所需。通过深入浅出、通俗易懂的教学方式,指导学生更快的掌握技能知识,成就上万个高薪就业学子。 更多问题咨询,欢迎点击------>>>>在线客服

你可能也喜欢这些

在线客服咨询

领取资料

X
立即免费领取

请准确填写您的信息

点击领取
#第三方统计代码(模版变量) '); })();
'); })();