python入门2

文章目录

  • 常用标准库函数
  • 异常
  • 上下文管理器和`with`语句
  • 本地数据获取
  • 网络数据获取

常用标准库函数

  1. math 数学运算的一系列函数

    import math   #导入库
    dir(math)    #查看库中包含的函数
    help(math.radians)    # 查看某个具体函数的帮助
    
  2. OS模块 与系统交互的模块

    import os   #导入库
    dir(os)    #查看库中包含的函数
    help(os.chdir)    # 查看某个具体函数的帮助
    
  3. random模块 提供随机功能

    import random
    random.choice(['c++','java','python'])
        'c++'
    random.randint(1,100)
    	96
    random.randrange(0,10,2)
    	8
    random.random()
    	0.8494016173444663
    random.uniform(5,10)
    	6.736951630571202
    random.sample(range(101),10)
    	[2, 81, 42, 24, 72, 4, 34, 39, 98, 36]
        
    nums=[1,2,3,4,5]
    random.shuffle(nums)
    nums
    	[5, 2, 4, 1, 3]
    
  4. datetime模块 提供和时间有关的模块

    import datetime
    from datetime import date
    date.today()
    	datetime.date(2019, 9, 23)
        
    from datetime import time
    tm=time(19,36,25)
    print(tm)
    	19:36:25
    
    from datetime import datetime
    datetime.now()
    	datetime.datetime(2019, 9, 23, 9, 32, 12, 486622)
        
    print(datetime.now().strftime('%A,%b %d %Y %H:%M'))
    	Monday,Sep 23 2019 09:33
        
    dt=datetime(2019,9,23,9,33)
    ts=dt.timestamp()
    ts
    	1569202380.0
        
    print(datetime.fromtimestamp(ts))
    	2019-09-23 09:33:00
    

异常

  • 查看异常类 dir(__builtins__)前几个以Error结尾的

  • try except finally else处理机制

    try:
        raise
    except [Exception as err]:
        print(err)
    finally:
        do
    else:
        do
    
  • 例子 可以有多个except语句 和Java的异常区别就像循环里和存在的区别一样

    try:
        num1=int(input('enter the first number:'))
        num2=int(input('enter the second number:'))
        print(num1/num2)
    except ValueError:
        print('please input a digit')
    except ZeroDivisionError as err:
        print('The second number cannot be zero')
        print(err)
    else:
        print('everything is ok')
        
    try:
        num1=int(input('enter the first number:'))
        num2=int(input('enter the second number:'))
        print(num1/num2)
    except (ValueError,ZeroDivisionError):
        print('Invalid input')
    else:
        print('everything is ok')
        
    try:
        num1=int(input('enter the first number:'))
        num2=int(input('enter the second number:'))
        print(num1/num2)
    except:
        print('something went wrong')
    else:
        print('everything is ok')
        
        
    try:
        num1=int(input('enter the first number:'))
        num2=int(input('enter the second number:'))
        print(num1/num2)
    except Exception as err:
        print('something went wrong')
        print(err)
    else:
        print('everything is ok')
    
  • 和循环结合

    while True:
        try:
            num1=int(input('enter the first number:'))
            num2=int(input('enter the second number:'))
            print(num1/num2)
            break
        except Exception as err:
            print('something went wrong')
            print(err)
        else:
            print('everything is ok')
        finally:
            print('this circle is over')
    

上下文管理器和with语句

  • 多用于文件操作(会默认关闭文件 不需要指定close
with open('入门0.ipynb') as f:
    for line in f:
        print(line,end=' ')

本地数据获取

  1. 文件的打开 open函数–返回一个可迭代的文件对象

    file_obj=open(filename ,mpdel='r',buffering=-1,...)

    • 使用help(open)查看更多

    • model为可选参数 默认值是r 基础是r w a三个模式 加b表示以二进制方式

    • buffering也是可选参数 默认值是-1(0表示不缓冲,>=1的值表示缓冲一行或者缓冲区大小

      f1=open(r'/home/yang/test.txt')  #默认以读方式打开
      f1=open(r'/home/yang/test.txt','w')  #以写方式打开 会删除源数据 谨慎
      f1=open(r'/home/yang/test.txt','wb',0)  #以二进制写的方式打开 谨慎
      
  2. 相关函数

    1. 写文件 file_obj.write(str)

      with open('Desktop/tset.txt','w') as f:
          f.write('hello world')
      
    2. 读文件 file_obj.read([size]) 带参数表示至多读出size字节数据 返回字符串。不带则读到文件结束 返回字符串(会包含换行符)

      with open('Desktop/tset.txt') as f:
          p1=f.read(5)
          p2=f.read()
      print(p1,p2)
      
      	hello world
      
    3. 读写多行数据

      with open('test.txt') as f1:
          cNames=f1.readlines()
          for i in range(0,len(cNames)):
              cNames[i]=str(i+1)+' '+cNames[i]
      with open('stest.txt','w') as f2:
          f2.writelines(cNames)
      
    4. 文件指针 file_name.seek(offset,whence=0)

      • 在文件中移动文件指针 从whence(0表示文件头部 1表示当前位置 2表示文件尾部)移动offset个字节
      • whence为可选参数 默认值为0

网络数据获取

(利用好相关库的官网提供的文档 注意所爬网站的爬虫协议)

  1. 抓取

    • urllib内建模块
      • urllib.request
    • Requests第三方库
    • Scrapy框架
  2. 解析

    • BeautifulSoup
    • re模块
  3. 例子 爬取分析豆瓣评书对《情书》的书评和评分

    import requests
    from bs4 import BeautifulSoup
    import re
    
    r=requests.get('https://book.douban.com/subject/30230525/comments/')
    soup=BeautifulSoup(r.text,'lxml')
    
    pattern=soup.find_all('span','short')
    #for item in pattern:
      #  print(item.string)
        
    pattern_s=re.compile(' )
    p=re.findall(pattern_s,r.text)
    #for star in p:
     #   print(star,end=' ')
        
    for i in range(0,len(pattern)-1):
        print('reader',(i+1),'comments:',pattern[i].string,'this man give '+p[i]+'star ',end='\n\n')
      
    Out:
    reader 1 comments: 在图书馆看到,这个版本里面还夹了张借书卡,但是反面没有画哈哈哈哈(有画就更好玩了 this man give 50 star
    
    reader 2 comments: 有人来过,有人爱过,有人守过,有人走过。 this man give 50 star
    
    reader 3 comments: 不动声色的故事最动人,没讲出口的爱情最深挚。岩井俊二《情书》,无论电影还是小说,都是值得珍藏在心中、照亮人生晦暗的白月光。
    大雪终停,明月当空,一切失去,最后都将化作我想起你时,嘴角的一抹浅淡笑容。你好吗?我很好。 this man give 50 star
    
    reader 4 comments: 每一次读,都能找回最初的感动,就像值得永远珍藏的初次的心动。 this man give 50 star
    
    reader 5 comments: 看完后我其实只有一个感觉……博子……也太惨了吧…… this man give 40 star
    
    reader 6 comments: 所谓暗恋便是,怕你知道,怕你不知道,怕你知道却装作不知道。我们都暗恋过别人,我们也都曾被人暗恋。 this man give 50 star
    
    reader 7 comments: 未曾开口的爱,你终究还是知道了 this man give 50 star
    
    reader 8 comments: 大雪终停,明月当空,一切失去,最后都将化作我想起你时,嘴角的一抹浅淡笑容。你好吗?我很好。 this man give 50 star
    
    reader 9 comments: 原来是这么个闷骚又唯美的暗恋故事 this man give 50 star
    
    reader 10 comments: 书里面夹了一张借书证,就当送我的礼物了。 this man give 50 star
    
    reader 11 comments: 书成为某种永恒的载体,让人感觉到青春的余温。 this man give 40 star
    
    reader 12 comments: 格式满特别的小说,干干净净,有一个可以想念的人就是幸福,大抵是过了那个年纪。 this man give 30 star
    
    reader 13 comments: 看过电影来温习此书。这本书泪点颇多,比如爷爷背树去医院的那段还有与雷公爷爷回忆藤井树的那段,都令人潸然泪下。还有感觉日本人对很多事情看得都是很平静的,对于生死看着很平淡。一群人平静的回忆一个逝去之人,就像平常聊天一样。 this man give 50 star
    
    reader 14 comments: “生命是短暂的,而爱是永恒的”“有一个可以想念的人,就是幸福“ 这一次重读,终于悟到为什么这个简单清纯的故事如此隽永——两个女性的通信让死亡的阴影散去,爱与生命的阳光普照万物。冰冻蜻蜓、雪山日出、同名同岁阿树的意象都生动、清新。@微信阅读 this man give 50 star
    
    reader 15 comments: 凭我现在的回忆,说实话电影让我感情更触动,可能那时候还年轻一点,也许是画面更唯美,现在的我看这本书就像在看一个别人的故事,能感到里面的酸涩,但感觉不到其中的美好,只会暗叹一声,却不会为之流眼泪了。有时候文字还是比画面更具体更客观吧。所以回想起来,感觉电影的冲击更大,或者是年轻的心更鲜活更美好吧。    Ps.也可能是看电影时没有剧透,现在看书早已经知道所有发展的缘故
     this man give 50 star
    
    reader 16 comments: 我一面佯装平静,一面想把卡片踹到兜里。然后不凑巧,我喜欢的围裙,上下没有一个兜。 this man give 50 star
    
    reader 17 comments: 人的一生,有一个可想、可念、可爱的人,也是幸福的。 this man give 50 star
    
    reader 18 comments: 当时只道是寻常吧。想到以前看琅琊榜好像有一句“已经错过的岁月和已经动过的心都像逝去的河水那样无法倒流”,也许就是因为不会再携手,这种淡淡的怅惋才更迷人吧。结束于开始之前,那些最纯粹可爱的时光都不会受到凡俗的玷污,就那样不染尘垢,封存于内心的某个角落。因为这些回忆,觉得自己毕竟不是“唯一一个不幸的人”啊。 this man give 40 star
    
    reader 19 comments: 简单直白、不需要过多思考的故事。有些话正是因为没有说出口,才更显得珍贵吧。这样来看,某种意义上,《胰脏物语》真的可以算是《情书》的精神续作了。 this man give 50 star
    
    

你可能感兴趣的:(Python)