os模块,sys模块,序列化模块,异常处理

os模块

跟操作系统相关

import os
# os.makedirs(‘dirname1/dirname2‘)#生成多层递归目录
# os.removedirs(‘dirname1‘)#若目录为空,则删除,查找上级目录,如果为空也删除,递归删除
# os.mkdir(‘dirname‘)#生成单级目录,不能生成多级
# os.rmdir(‘dirname1‘)#删除单级空目录,如果目录不为空报错无法删除
# os.listdir(‘dirname‘)#列出指定目录下的所有文件极其子目录,包括隐藏文件,以列表的形式打印
# os.remove(‘dirname/1.py‘)#删除指定文件
# os.rename(‘old‘,‘new‘)#重命名文件或者目录
# os.stat(‘path/filename‘)#获取文件/目录的信息
#
# os.system(‘dir‘)#运行shell命令,直接显示
# os.popen(‘bash command‘).read()#运行shell命令,获取执行结果
# os.getcwd()#获取当前工作目录
# os.chdir(‘dirname‘)#改变当前脚本工作目录,相当与cd
#
# # os.path
# os.path.abspath(‘day1‘)#返回path规范化的绝对路径
# os.path.split(‘D:\python\python113天\作业\day11‘)#将path分割成目录和文件名按元组返回
# os.path.dirname(‘D:\python\python113天\作业\day11‘)#返回path的目录名,就是os.path.split()返回元组的第一项
# os.path.basename(‘D:\python\python113天\作业\day11‘)#返回path的文件名,就是os.path.split()返回元组的第二项
# os.path.exists(‘path‘)#如果path存在,返回True;否则返回false
# os.path.isabs(‘path‘)#判断path是否是绝对路径
# os.path.isfile(‘path‘)#判断path是否是一个存在的文件
# os.path.isdir(‘path‘)#判断path是否是一个存在的目录
# os.path.join(‘c:‘,‘D:‘,‘kapu‘,‘jcc‘)#将多个路径组合后返回,第一个绝对路径前的参数将被忽略
# os.path.getatime(‘path‘)#返回path所指向的文件或者目录的最后访问时间
# os.path.getmtime(‘path‘)#返回path指向的文件或者目录的最后修改时间
# os.path.getsize(‘path‘)#返回path的大小

# os.sep#输出操作系统特定的路径分隔符
# os.linesep #输出当前平台使用的终止符
# os.pathsep #输出分割文件路径的字符串
# os.name #输出字符串显示当前使用平台,win->nt  linux->posix

sys模块

和python解释器交互

import sys
# sys.platform#返回操作系统平台的名称
# sys.version #获取python解释器的版本信息
# sys.exit()#退出系统,正常退出exit(0),非正常退出exit(1)
# sys.path#返回模块搜索路径
# sys.argv#

序列化相关模块

序列化:数据类型-->字符串
反序列化:字符串-->数据类型
什么是序列?字符串
应用情况:数据存储,网络传输

序列化的三种方法

1.json

优点: 通用的序列化格式
缺点:只有很少一部分类型能够通过json转化成字符串

# 序列化过程 dumps(直接在内存中操作)  dump(对文件中的内容进行操作)
import json
# dumps
dic = {1:‘a‘}
str_dic = json.dumps(dic)
print(str_dic)#{"1": "a"}

# dump
with open(‘d:\jcc.txt‘,‘w‘,encoding=‘utf-8‘) as f:
    json.dump(dic,f)#把dic字典序列化后写入jcc.txt文件中

# 反序列过程 loads(直接在内存中操作)load(对文件中的内容进行操作)
# loads
dic_d = json.loads(str_dic)
print(dic_d)#{‘1‘: ‘a‘}
# load
with open(‘d:\jcc.txt‘,encoding=‘utf-8‘) as f:
    str  = json.load(f)
print(str)
# json只能序列化列表和字典

2.pickle

优点:所有的python中的数据类型都可以转化成字符串
序列化的内容只有python能理解,且部分反序列化依赖代码
可以分步load和dump
序列化之后的内容是bytes类型

3.shelve

序列化句柄
使用句柄直接操作,非常方便

python3中独有的方法

import shelve
# 序列化
f = shelve.open(‘shelve_file‘)
f[‘key‘] = {‘int‘:1,‘float‘:9.2}
f.close()

# 反序列化
f = shelve.open(‘shelve_file‘)
she = f[‘key‘]
f.close()
print(she)

异常处理

处理可预测且无法避免的错误

try:
    ret = int(input(‘>>>‘))
    print(ret)
except ValueError as e:   #发生异常时执行以下代码
    print(‘input number‘,e)
else:    #没有异常执行以下代码
    print(‘-------‘)
finally:   #无论异常是否出现,都执行的代码
    print(‘完成‘)
except支持多分支
万能异常 Exception:可以捕捉所有异常
尽可能的单独处理异常,万能异常写在最后

主动触发一个异常

try:
    raise TypeError(‘类型异常‘)
except TypeError as e:
    print(e)

自定义一个异常

class EvaException(BaseException):
    def __init__(self,msg):
        self.msg=msg
    def __str__(self):
        return self.msg
try:
    raise EvaException(‘类型错误‘)
except EvaException as e:
    print(e)

常用异常

# AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
# IOError 输入/输出异常;基本上是无法打开文件
# ImportError 无法引入模块或包;基本上是路径问题或名称错误
# IndentationError 语法错误(的子类) ;代码没有正确对齐
# IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
# KeyError 试图访问字典里不存在的键
# KeyboardInterrupt Ctrl+C被按下
# NameError 使用一个还未被赋予对象的变量
# SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
# TypeError 传入对象类型与要求的不符合
# UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
# 导致你以为正在访问它
# ValueError 传入一个调用者不期望的值,即使值的类型是正确的

堆栈实现的一个三级菜单

menu = {
    ‘北京‘: {
        ‘海淀‘: {
            ‘五道口‘: {
                ‘soho‘: {},
                ‘网易‘: {},
                ‘google‘: {}
            },
            ‘中关村‘: {
                ‘爱奇艺‘: {},
                ‘汽车之家‘: {},
                ‘youku‘: {},
            },
            ‘上地‘: {
                ‘百度‘: {},
            },
        },
        ‘昌平‘: {
            ‘沙河‘: {
                ‘老男孩‘: {},
                ‘北航‘: {},
            },
            ‘天通苑‘: {},
            ‘回龙观‘: {},
        },
        ‘朝阳‘: {},
        ‘东城‘: {},
    },
    ‘上海‘: {
        ‘闵行‘: {
            "人民广场": {
                ‘炸鸡店‘: {}
            }
        },
        ‘闸北‘: {
            ‘火车战‘: {
                ‘携程‘: {}
            }
        },
        ‘浦东‘: {},
    },
    ‘山东‘: {},
}
# 堆栈实现三级菜单
li = [menu]
while li:
    for i in li[-1]:print(i)
    k = input(‘>>>‘)
    if k in li[-1].keys() and li[-1][k]:li.append(li[-1][k])
    elif k==‘b‘:li.pop()
    elif k==‘q‘:break

原文地址:https://www.cnblogs.com/jiangchengcheng/p/9587968.html

时间: 2024-10-18 09:33:02

os模块,sys模块,序列化模块,异常处理的相关文章

Python之常用模块(re,时间,random,os,sys,序列化模块)(Day20)

一.时间模块 #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取当前时间戳 在Python中表示时间的三种方式:时间戳,元组(struct_time), 格式化的时间字符串[时间戳为计算机能够识别的时间:时间字符串是人能够识别的时间:元组则是用来操作时间的] #导入时间模块 >>>import time #时间戳 >>>time.time() 1500875844.800804 #时间字符串 >

常用模块---sys&logging&序列化模块(json&pickle)

sys 模块 sys.argv 命令行参数List,第一个元素是程序本身路径,通常用来避免io 阻塞 print('欢迎进入') info=sys.argv if info[index('-u')+1] == 'mona' and info[index('-p')+1] == '123': print('login successful') sys.exit(n) 退出程序,正常退出时exit(0) count=1 while count<10: if count == 8: sys.exit(

python 正则,os,sys,hashlib模块

简单的小算法 random随机获取数据 import random def getrandata(num): a=[] i=0 while i<num: a.append(random.randint(0,100)) i+=1 return a print(getrandata(10)) 例: [5, 3, 38, 4, 69, 40, 94, 36, 14, 26] 冒泡排序 import getdata def bubbleSort(a): l=len(a)-2 i=0 while i<l

python全栈开发【第十篇】Python常用模块二(时间、random、os、sys和序列化)

一.time模块 表示时间的三种方式: 时间戳:数字(计算机能认识的) 时间字符串:t='2012-12-12' 结构化时间:time.struct_time(tm_year=2017, tm_mon=8, tm_mday=8, tm_hour=8, tm_min=4, tm_sec=32, tm_wday=1, tm_yday=220, tm_isdst=0)像这样的就是结构化时间 #time模块的常用方法及三种时间之间的转换 import time # 对象:对象.方法 # --------

Python学习第38天(文件处理,os、sys、pickle模块复习)

今天部分的内容会写的比较随意,想到需要复习的知识我就会进行一下演示,这样便于尽快把欠下的课程选择部分和即将要开始的ftp实现任务尽快完成. 一.文件处理部分 打开文件的一个固定格式:文件句柄 = open('文件路径', '模式') 模式有以下: 1. 打开文件的模式有(默认为文本模式): r ,只读模式[默认模式,文件必须存在,不存在则抛出异常] w,只写模式[不可读:不存在则创建:存在则清空内容] a, 之追加写模式[不可读:不存在则创建:存在则只追加内容] 2. 对于非文本文件,我们只能使

python之os、sys和random模块

import os # print(os.getcwd())#获取当前目录,绝对路径# print(os.chdir('../'))#更改当前目录,../的意思是退回上一级目录# print(os.getcwd())# print(os.curdir)#当前目录,相对路径# print(os.pardir)#当前目录,相对路径# print(os.mkdir('test0117'))#创建文件夹# print(os.rmdir('test0117'))#删除文件夹,只能删除空文件夹# print

Python模块-logging、序列化模块、re模块

MarkdownPad Document logging模块 import logging   logging.debug('debug message')   logging.info('info message')   logging.warning('warning message')   logging.error('error message')   logging.critical('critical message') 运行结果: C:\Python36\python.exe C:

python开发模块基础:序列化模块json,pickle,shelve

一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来.但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中.你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的

python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,在python中.一个.py文件就称为一个模块(Module) 使用模块的好处: 提高了代码的可维护性. 其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们编写程序的时候也经常引用其他模块,包括python的内置的模块和第三方模块. 包(package

os模块,sys模块,json / pickle模块,logging模块

目录 OS模块 sys模块 json和pickle模块 序列化和反序列化 json模块 pickle logging模块 OS模块 能与操作系统交互,控制文件 / 文件夹 # 创建文件夹 import os os.mkdir(r'D:\py_case\test') # 删除文件夹 os.rmdir(r'D:\py_case\test') # # 列出指定目录下所有文件和子目录 (子目录文件不会列出来) res = os.listdir(r'D:\pycharm_project\Test') pr