1.文件操作

  mode的常用种类r w a rb wb ab ,带b标识不用指定编码格式全都是byte类型 ,用于非文本文件(图 音 视频)  

  r模式下仅读取

  w模式下当文件没有可以创建 ,但是会覆盖写入

  a模式下可以追加

  readline() 读取一行,不占用内存   

  readlines() 将文件所有行读取放入一个list中

# 文件读取f = open('json.txt',mode='r',encoding="utf-8")  # 读取文件编码print(f.readline())print(f.readline())         # 从文件中读取一行一行读取print(f.read())             # 将管道文件内容一次读取出来f.seek(0)                   # 移动光标 ,0到最开始位置 1光标当前位置 2文件尾部print(f.read())f.flush()                   # 清空管道f.close()                   # 关闭管道

# 文件复制写入with open('json.txt', mode='rb') as f1,open('copy.txt', mode='wb') as f2:      # with可以帮助做管道优化    for line in f1:                     # for循环按文件行循环        f2.write(line)

# 文件修改(所有的编辑器都是如此)# 文件修改的步骤: 1.文件修改仅将源文件读出 2.变更操作写入新文件 3.源文件删除 4.新文件重命名import oswith open("test1.txt", mode="r", encoding="utf-8") as f1, \     open("test1.txt_副本", mode="w", encoding="utf-8") as f2:    # 代码块(with), 当这个代码块结束的时候. 自动的关闭f1和f2    for line in f1:        s = line.replace("centos", "redhat")        f2.write(s)os.remove("test1.txt")os.rename("test1.txt_副本", "test1.txt")

2.三种推导式

  推导式是可以从一个数据序列构建另一个新的数据序列的结构体(三种:list dict set推导式)

  list推导式        [表达式 for 循环 if 条件]        #换成圆括号变生成器

#推导式list1 = [x*x for x in range(1,10)]
#普通
list1=[]
for x in range(1,10):list1.append(x*x)

  dict推导式       {key:value for循环 if判断}       

# 推导式dict1 = {x:x**x for x in range(0, 10) if x < 9}

# 普通dict3={}for k in  range(0,10):    if k < 9:        dict3[k]=k**k
# key values 互换dict1 = {1: 'n1', 2: 'n2'}dict2 = {v: k+1 for k, v in dict1.items()}

  set推导式  {表达式 for 循环 if 条件}     # 与列表推导式的扩号不同   

set1 = {x**x:2 for x in range(0, 10) if x < 9}

3.闭包

   闭包在python中 ,可以简单理解为 ,内函数绑定外函数的局部变量 ,外函数返回内函数内存地址 

# 匿名函数的闭包写法fun = [lambda x: x*i for i in range(4)]          # 典型闭包 ,外函数的i最后会是3,内函数lambda从外函数没有定义i的值 ,最后生成列表都是函数

for item in fun:

print(item(1))

# def函数的闭包写法def func():    # 定义一个空列表    fun_lambda_list = []    # 循环    for i in range(4):        # 定义一个内函数,没被调用也不会去拿i的值 ,所以返回值一直都是x*i        def lambda_(x):            # 返回x*i            return x * i        # 将内函数追加到列表中        fun_lambda_list.append(lambda_)    return fun_lambda_list                #列表中有四个函数(一个都没有执行[x*i,x*i,x*i,x*i]) ,当fun被调用的那一刻开始i被定格为3

# 将内函数中加入每次i的值就可以了,这样获得的函数列表就是[x*0,x*1,x*2,x*3]
fun = [lambda x,i=i:x*i for i in range(4)]

4.模块-包

  内置标准模块

    random模块

import random

print(random.random())  # 随机0-1的浮点print(random.uniform(1, 3))  # 随机1-3的浮点print(random.randint(1, 10))  # 随机取1-10的整数

print(random.randrange(1, 9, 2))  # 随机取1-9之间的数步长为2,不顾尾print(random.choice([1, 2, 3, [2, 3]]))  # 随机选择可迭代对象元素print(random.sample([1, 2, 3, 4, 'hh'], 3))  # 列表任意X个元素组成新列表,这里X是3

    time模块  

import time

print(time.localtime())     #打印当前日期print(time.time())          #打印时间戳 19701.1. 00:00:00的偏移量print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))      #格式化当前日期(format ,日期)

    re模块

      正则

# .    匹配任意单个字符# ^    匹配字符串起始部分# $    匹配字符串终止位置# *    匹配前一个字符0或多次# +      匹配前一个字符1次或多次# ?    匹配前一个字符1次或0次# {N}   匹配前一个字符N次 # {N,}  匹配前一个字符N次 # {M,N}  匹配前一个字符N,M次# [...]  匹配任意字符集中单个字符# [x-y]  匹配范围内任意单个字符# [^..]  匹配出去字符集中任意单个字符 # \d    匹配任意一个10机制数字# \w    匹配任意字母数字# \s    匹配任何空字符# \b    匹配字符边界# ()     分组 ,# \N    匹配保存的分组# \     转义符

1.2.3.4.5.

      re常用方法

        re.match('正则表达式', 要匹配的字符串)            #如果匹配成功返回一个对象 ,否则返回None

    os模块

import os

os.path.abspath('..')                       # 获取父目录绝对路径

os.path.abspath('.')                       # 获取当前绝对路径
os.path.abspath(__file__)                  #获取当前文件的路径和文件名
dir1 = 'C:\\boruoboluomi\\a1\\b1\\a.txt'

os.path.dirname(os.path.dirname(os.path.abspath(dir1))) #dirname可以将路径 一层一层脱掉

os.path.split(dir1)                      # 切割路径 ,将路径与文件分离

os.path.join('C:\\boruoboluomi\\a1\\b1', 'a.txt')      # 拼接路径 , 将路径与文件拼接

os.path.exists(dir1)                      # 判断该文件是否存在

os.remove('绝对路径文件')                  # 删除文件

os.system('ls /etc/profile')             # 执行shell命令
os.getcwd()                      # 获取pwd当前绝对路径

    sys模块

import sys

print(sys.modules)            #查看解释器运行时自动加载的所有模块
print(sys.path)            #查看第三方模块的路径 ,该路径下的模块都可以使用import导入使用,也可以使用sys.path.append()追加路径

    math模块

import math

t1 = 6.6

print(math.ceil(t1))           # 向上取整

print(math.floor(t1))          # 向下取整

print(math.pow(t1, 2))          # t1的2次方

print(math.fabs(t1))            # t1的绝对值

    json模块    

      序列化模块 ,json可以将python数据类型序列化为可传输的字符串 ,对方接受到后通过反序列化可获得自己可读语言数据类型

import  json         #用于网络传输的dumps ,loadsdic = {'name':'小咪','age':12,'sex':'公'}  #定义一个字典dicret = json.dumps(dic)              #序列化过程:将dic变成json格式的ret(特殊字符串)ret1 = json.loads(ret)            #反序列化过程:将ret这个json格式反解成为ret1(还原为字典)print(ret,type(ret))print(ret1,type(ret1)) #用于文件存储数据的dump ,load list1 = [1, 2, 3, 4] f1 = open('json.txt', mode='w')     # 打开一个文件,文件仅支持字符串写入  json.dump(list1, f1)           # dump方法可以将py数据类型和文件句柄当做参数传入,做序列化  f1.close() f1 = open('json.txt', mode='r') ret = json.load(f1)           # dump方法将文件中内容反序列化取出 print(ret, type(ret))         # 反序列化后数据类型和序列化之前一模一样

    rsa模块 & base64模块

      1.生成一组非对称秘钥对 ,该秘钥对最大加密数据长度是128字节 ,其中11个自己加密使用 ,被加密数据仅有117

      2.base64编码的原因是因为网络传输错误会降低

      3.定义加密函数 ,将数据以117步长切割加密 ,放入列表 ,发送到对端

      4.定义解密函数 ,将数据以128步长解密拼接 ,即可获得原数据

      5.调用rsa加密必须是byte的数据

import rsa
import base64####生成一组秘钥对####
pub_key_obj, priv_key_obj = rsa.newkeys(1024)  # 最大加密value的字节数是  1024/8 - 11(自己用) = 117(可用加密字节)# 将对象转换为字符串类型
pub_key_str = pub_key_obj.save_pkcs1()
priv_key_str = priv_key_obj.save_pkcs1()# 再通过base64编码
pub_key_code = base64.standard_b64encode(pub_key_str)
priv_key_code = base64.standard_b64encode(priv_key_str) print(pub_key_code) print(priv_key_code) ####数据加密#### def encrypt(bytes_value): values_list = [] key_str = base64.standard_b64decode(pub_key_code) pk = rsa.PublicKey.load_pkcs1(key_str) length = len(bytes_value) for i in range(0, length, 117): val = rsa.encrypt(bytes_value[i: i + 117], pk) values_list.append(val) val = b''.join(values_list) return val ####数据解密#### def decrypt(value): values_list = [] key_str = base64.standard_b64decode(priv_key_code) pk = rsa.PrivateKey.load_pkcs1(key_str) length = len(value) for i in range(0, length, 128): val = rsa.decrypt(value[i: i + 128], pk) values_list.append(val) val = b''.join(values_list) # val = rsa.decrypt(value, pk) return val ###调用 string = 'alex' * 100 ret = encrypt(string.encode('utf-8')) # 加密数据要求byte类型 print(ret) print(decrypt(ret).decode('utf-8')) # 数据encode编码->加密 ->解密->decode解码

  自定义模块

    自定义日志模块

      1.__init__方法定义logger对象 ,定义info ,error方法 ,实例化Logger类获得单例模式的对象

      2.使用直接from  文件 import logger 加载对象

      3.调用 logger.info(日志即可)

import logging
from conf import settingsclass Logger:def __init__(self, file_name, log_name, level=logging.INFO):# 定义使用文件介质存储(FileHandler) ,该文件名和编码格式file_handler = logging.FileHandler(file_name, encoding='utf-8')# 定义格式(Formatter)fmt = logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s") # 为文件介质定义格式(setFormatter)  file_handler.setFormatter(fmt) # 定义logger对象,给实例化的对象 ,定义日志对象名与最低显示等级 self.logger = logging.Logger(log_name, level=level) self.logger.addHandler(file_handler) def info(self, msg): return self.logger.info(msg) def error(self, msg): return self.logger.error(msg) logger = Logger(settings.LOGGER_PATH, settings.LOGGER_NAME)

  包

    包就是有__init__.py文件标识的文件夹

  精准导入方式

    from lib.disk. import Pack1Class          #推荐使用

    import Root.Pack1.Pack1Class

转载于:https://www.cnblogs.com/quguanwen/p/11158033.html

python基础-2相关推荐

  1. f是一个python内部变量类型,Python基础变量类型——List浅析

    Python使用list 一.list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示 ...

  2. python 等号报错_Python学习----Python基础

    Python基础 一.数据类型和变量 1.在Python中,等号=是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量. 例如: a =520# a是整数prin ...

  3. python基础——继承与派生、组合

    python基础--继承与派生 1 什么是继承: 继承是一种创建新的类的方式,在python中,新建的类可以继承自一个或者多个父类,原始类成为基类或超累,新建的类成为派生类或子类 1.1 继承分为:单 ...

  4. Python学习笔记1 Python基础

    第1章 Python基础 1.1 Python概述及版本介绍 1.Python是一种面向对象的解释型计算机程序设计语言(解释型语言源代码->解释器逐行解释每一句源代码) 2.优点:高级语言.可移 ...

  5. python基础---元组、字典、函数、文件、异常

    文章目录 python基础---元组.字典.函数.文件.异常 Tuple(元组) 常用操作 dict(字典) 函数 文件 异常 python基础-元组.字典.函数.文件.异常 Tuple(元组) tu ...

  6. 快速掌握Python的捷径-Python基础前传(1)

    文: jacky(朱元禄) 开文序 最近看新闻,发现高考都考Python了,随着人工智能的火热,学数据科学的人越来越多了!但对于数据行业本身来说,现象级的火热,这并不是什么好事.  方丈高楼平地起,无 ...

  7. Python培训教程之Python基础知识点梳理

    Python语言是入门IT行业比较快速且简单的一门编程语言,学习Python语言不仅有着非常大的发展空间,还可以有一个非常好的工作,下面小编就来给大家分享一篇Python培训教程之Python基础知识 ...

  8. python基础04

    python基础04 python2在编译安装时,可以通过参数 -----enable----unicode=ucs2 或 -----enable--unicode=ucs4 分别用于指定使用2个字节 ...

  9. 刻意练习:Python基础 -- Task12. 模块

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

  10. 刻意练习:Python基础 -- Task11. 魔法方法

    背景 我们准备利用17天时间,将 "Python基础的刻意练习" 分为如下任务: Task01:变量.运算符与数据类型(1day) Task02:条件与循环(1day) Task0 ...

最新文章

  1. 奇异值分解与最小二乘问题 线性回归
  2. 美团某程序员哀叹:能力很强,却因为不会“向上管理”而惨遭被裁!怎么办?...
  3. OpenCV-Python 雪花飘落特效
  4. jquery获取服务器控件的值
  5. 腾讯与Github的魔幻会面背后的故事…
  6. python变量命名规则思维导图_Python思维导图详解
  7. 程序员35岁之后的出路_35岁的程序员走向何方?
  8. 有关 input默认宽度
  9. manjaro设置java_manjaro 深度学习编程环境搭建
  10. 【NOIP2004】【Luogu1085】不高兴的津津
  11. js中数组增删查改unshift、push、pop、shift、slice、indexOf、concat、join
  12. Composite模式
  13. springboot flink结果输入到hbase_Flink流处理
  14. python ocr文字识别竖排繁体_古籍族谱繁体竖排中文识别图文攻略-千百OCR
  15. 企业长期偿债能力评估-利息收入倍数、财务杠杆比率、资产负债率、利息保障倍数、债务股本比率...
  16. DrawIO 基于MinIO以及OSS私有云方案
  17. 彪悍的人生不需要解释!
  18. yaahp使用教程_如何用yaahp进行大量备选方案/评价对象的综合评价?
  19. 在java中下列说法不正确的是,【单选题】关于java中的转义字符,下列说法不正确的是 A. 是制表位 B. 可以实现换行 C. 可以在页面中显示双引号 D. \可以在页面实现注释...
  20. BB10动态创建Button并响应单击事件(C++版本)

热门文章

  1. [PHP] 内部接口简单加密验证方式
  2. [PHP] 深度解析Nginx下的PHP框架路由实现
  3. Mac OS X Leopard 10.5.5 安裝手记 (Dell D830)
  4. Ubuntu下载连接(阿里云镜像)
  5. Java并发编程实战 第13章 显式锁
  6. Ubuntu14-04安装redis和php5-redis扩展
  7. JPEG 原理详细实例分析及其在嵌入式 Linux 中的应用
  8. 嵌入式linux ext4映像制作工具说明 real210_v62
  9. 图解ARP协议(六)RARP与IARP:被遗忘的兄弟协议
  10. 微服务容器化最短路径,微服务 on Serverless 最佳实践