logging shutil json requests

### logging

- 日记模块,记录程序运行错误记录

  import logging
  from logging import handlers
  import requests
  
  #filename还是输出文件名称,when是对时间分割(多久分割一个文件输出),可以是D/H/M等,interval:是指等待多少个单位 when 的时间后,Logger会自动重建文件
  file_handler = handlers.TimedRotatingFileHandler(filename="x3.log",when="D",interval=1,encoding="utf-8")
  #错误信息配置
  filehande = logging.basicConfig(
      format = "%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s",
      datefmt="%Y-%m-%d %H:%M:%S:%p",
      handlers=[file_handler,],
      level=logging.ERROR    #报告等级设置,可以是INFO,DEBUG,ERROR,WAINING等
  )
  
  
  try:
      requests.get("http://www.google.com")
  
  except Exception as e:
      msg = str(e)  #把报错的转换位字符串
      logging.error(msg,exc_info=True)   #这里的exc_info=True是位了显示报告中出错的位
  结果:
  输出一个x3.log的文件,根据wen的设置会对文件分割,并且有有时间
  

## shutil

### shutil.rmtree()

- 删除整个文件夹,包括文件夹里面的文件

  import shutil
  
  folder_path = r"E:\aaa\bbb\ccc"
  shutil.rmtree(folder_path)
  
  

### shutil.copy(src,dst)

- 复制文件,必须是文件

  import shutil
  old_path = r"G:\a\a1.txt"
  new_path = r"E:"
  print(new_path)
  shutil.copy(old_path,new_path)
  
  结果:在E盘复制出一个a1.txt文件
  
  

### shutil.copytree(src,dst)

- 复制整个文件夹,必须是文件夹

  import shutil
  
  folder_oldpath = r"E:\a"
  folder_newpath = r"E:\g"
  
  shutil.copytree(folder_oldpath,folder_newpath)
  结果:在E盘复制出一个文件夹g,里面的文件就是a里面的文件
  

### shutil.move(src,dst)

- 更改文件或者文件名

  import shutil
  old_path = r"G:\b"
  new_path = r"G:\c"
  print(new_path)
  shutil.move(old_path,new_path)
  结果:把G盘的文件夹b名字改成c
  
  例2:
  
  import shutil
  old_path = r"G:\b\1.txt"
  new_path = r"G:\b\2.txt"
  print(new_path)
  shutil.move(old_path,new_path)
  结果:把G盘文件夹b内的1.txt文件改位2.txt
  

### shutil.make_archive(压缩后的文件目录,format="zip",要压缩的文件目录)

- shutil.make_archive("G:\zzh",format="zip",root_dir=r"G:\a")文件压缩,可以压缩成“zip”, “tar”, “bztar”,“gztar格式

  import shutil
  
  shutil.make_archive("G:\zzh",format="zip",root_dir=r"G:\a")
  结果:把G盘的a文件夹压缩成zzh.zip文件保存在G盘中
  
  
  例2:
  
  import shutil
  in_path = r"G:\a"  #要压缩的文件夹目录
  print(in_path)
  out_path = r"G:\xxh"   #压缩后的文件
  print(out_path)
  shutil.make_archive(out_path,format="zip",root_dir=in_path)
  结果:把G盘的a文件夹压缩成zzx.zip文件保存在G盘中
  

### shutil.unpack_archive(需要解压的文件路径 
  ,解压后的文件路径,format="zip")

- 解压shutil.unpack_archive(r"G:\nginx-1.13.9.zip",extract_dir=r"G:\bbb",format="zip")

  import shutil
  in_path = r"G:\nginx-1.13.9.zip"  #要解压的zip文件路径
  print(in_path)
  out_path = r"G:\ccc"  #解压后的文件路径
  print(out_path)
  shutil.unpack_archive(in_path,extract_dir=out_path,format="zip")
  结果:
  把G盘nginx-1.13.9压缩文件解压到ccc的文件夹中
  

## 第三方模块

### json

- dumps(object)

    - 将python的变量序列化转换成Json用的字符串,并返回值,json字符串没有元组,集合,字符串只能用双引号,python对象里面如果有元组,转换成Json字符串后会变成列表

      #将python的变量序列化成json用的字符串,注意字符串只能是双引号,有中文要设置,ensure_ascii =False
      
      x1 = ['我',1,{'姓名':"林明均","年龄":10},(1,"年级")]
      print(type(x1))
      x2 = json.dumps(x1,ensure_ascii =False)
      print(x2)
      print(type(x2))
      
      
      结果:
      <class 'list'>
      ["我", 1, {"姓名": "林明均", "年龄": 10}, [1, "年级"]]
      <class 'str'>
      

- loads(object)

    - 将Json的字符串,字符串反序列化换成python所用的变量,json字符串构成一定要用中括号[],或者大括号{}包住

      x1 = '["我",1,{"姓名":"林明均","年龄":10}]'
      print(x1,type(x1))
      x2 = json.loads(x1)
      print(x2,type(x2))
      结果:
      ["我",1,{"姓名":"林明均","年龄":10}] <class 'str'>
      ['我', 1, {'姓名': '林明均', '年龄': 10}] <class 'list'>
      

- dump(object,f)把python的变量序列化成Json字符串写入文件

  x1 = ['我',1,{'姓名':"林明均","年龄":10},(1,"年级")]
  
  with open('json_test1.txt', 'w',encoding="utf-8") as f:
      json.dump(x1, f)
  
  

- load(f)将文件里面的json格式的字符串读出来反序列化成python的变量

  #json_test1.txt的文件是字符串['我', 1, {'姓名': '林明均', '年龄': 10}, [1, '年级']] 
  with open("json_test1.txt","r") as f:
      data = json.load(f)
      print(data,type(data))
  结果:
  ['我', 1, {'姓名': '林明均', '年龄': 10}, [1, '年级']] <class 'list'>
  

### requests

- get("url")

    - 获取网页的信息,返回值,用R.text获取信息,R.status_code获取网页状态

      R = requests.get("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&ch=1&tn=78040160_26_pg&wd=python%20requests%E5%BA%94%E7%94%A8%E5%87%BD%E6%95%B0&fenlei=256&oq=python%2520%25E6%2580%258E%25E4%25B9%2588%25E5%2588%25A4%25E6%2596%25AD%25E8%25BE%2593%25E5%2585%25A5%25E6%2598%25AF%25E5%2590%25A6%25E4%25B8%25BA%25E7%25A9%25BA&rsv_pq=b52759d40010967c&rsv_t=a816wLPlpl2wzOoBXE%2FVV00TnSk418FxzUNpnRysCSmWrcobNQA0CWGugeGDXCVFY7EfqPE&rqlang=cn&rsv_enter=1&rsv_dl=tb&rsv_btype=t&inputT=989527&rsv_sug3=114&rsv_sug1=97&rsv_sug7=101&rsv_sug2=0&rsv_sug4=990406")
      print(R.text)  #获取网页返回来的信息
      print(R.status_code) #获取网页返回的状态
      
      

- post("url",data)

    - 向网页提交post请求

- put("url",data)

    - 向网页提交put请求

- head("url")

    - 获取网页头信息(head部分)

### range(start,stop ,step)

- 按循序生成整数

  #生成整数,参数可是负值,STEP可以是负值,参数可以只是一个整数
  for item in range(0,10,2):
      print(item)
  结果:
  0
  2
  4
  6
  8
  
  列2:
  
  for item in range(10):
      print(item)
  结果:
  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
  列3:
  
  for item in range(-8,-2,2):
      print(item,end=" ")
  结果:
  -8 -6 -4 

posted @ 2021-04-12 23:47  傻老头  阅读(71)  评论(0)    收藏  举报