• 小甲鱼Python笔记(下)


    二十八 二十九  文件

    打开文件 open(文件名[,模式][,缓冲])  注意open是个函数不是方法

    模式:

    缓冲:

    大于1的数字代表缓冲区的大小(单位是字节),-1(或者是任何负数)代表使用默认缓冲区大小

    只有用flush或者close时才会更新硬盘的数据

    三种标准的流:

    输入:sys.stdin 输出:sys.stdout  错误:sys.stderr

    用list()让文件成为一个列表,每一行是一个元素

    用f.seek(0,0)还原文件指针到起始位置

    用for读取文件中的每一行

    三十  os模块和os.path模块

    Python os模块包含普遍的操作系统功能,注意括号中需要使用字符串

    1.getcwd()

    返回当前工作目录

    2.chdir(path)

    改变工作目录

    3.listdir(path='.')

    列举指定目录中的文件名('.'表示当前目录,'..'表示上一级目录)

    4.mkdir(path)

    创建单层目录,如该目录已存在抛出异常

    5.makedirs(path)

    递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b'和'E:\a\c'并不会冲突

    6.remove(path)

    删除文件

    7.rmdir(path)

    删除单层目录,如该目录非空则抛出异常

    8.removedirs(path)

    递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常

    9.rename(old, new)

    将文件old重命名为new

    10.system(command)

    运行系统的shell命令

    以下函数没有参数

    11.os.curdir

    指代当前目录('.')

    12.os.pardir

    指代上一级目录('..')

    13.os.sep

    输出操作系统特定的路径分隔符(Win下为'\',Linux下为'/')

    14.os.linesep

    当前平台使用的行终止符(Win下为' ',Linux下为' ')

    15.os.name

    指代当前使用的操作系统(包括:'posix', 'nt', 'mac', 'os2', 'ce', 'java')

    os.path模块

    1.basename(path)

    去掉目录路径,单独返回文件名

    2.dirname(path)

    去掉文件名,单独返回目录路径

    3.join(path1[, path2[, ...]])

    将path1, path2各部分组合成一个路径名

    4,split(path)

    分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在

    5.splitext(path)

    分离文件名与扩展名,返回(f_name, f_extension)元组

    6.getsize(file)

    返回指定文件的尺寸,单位是字节

    7.getatime(file)

    返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    8.getctime(file)

    返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    9.getmtime(file)

    返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    以下为函数返回 True 或 False

    10.exists(path)

    判断指定路径(目录或文件)是否存在

    11.isabs(path)

    判断指定路径是否为绝对路径

    12.isdir(path)

    判断指定路径是否存在且是一个目录

    13.isfile(path)

    判断指定路径是否存在且是一个文件

    14.islink(path)

    判断指定路径是否存在且是一个符号链接

    15.ismount(path)

    判断指定路径是否存在且是一个挂载点

    16.samefile(path1, paht2)

    判断path1和path2两个路径是否指向同一个文件

    三十一  pickle模块

    以二进制保存数据

    三步走:打开文件,用pickle.dump()方法将数据放入文件,关闭文件

    1 import pickle
    2 my_list = [1,2,'老王',['abc']]
    3 pickle_file = open('my_list.pkl','wb') #文件名后缀无所谓
    4 pickle.dump(my_list,pickle_file)
    5 pickle_file.close()

    这样文件夹中就保存了my_list.pkl文件,(查询当前目录是用 import os   os.getcwd())

    读取数据

    打开文件,调用pickle.load()方法

    pickle_file = open('my_list.pkl','rb')
    list2 = pickle.load(pickle_file)
    print(list2)

    三十二 三十三  异常

    常见异常类型:

    AttributeError:属性错误,特性引用和赋值失败时会引发属性错误
    NameError:试图访问的变量名不存在
    SyntaxError:语法错误,代码形式错误
    Exception:所有异常的基类,因为所有python异常类都是基类Exception的其中一员,异常都是从基类Exception继承的,并且都在exceptions模块中定义。
    IOError:一般常见于打开不存在文件时会引发IOError错误,也可以解理为输出输入错误
    KeyError:使用了映射中不存在的关键字(键)时引发的关键字错误
    IndexError:索引错误,使用的索引不存在,常索引超出序列范围,什么是索引
    TypeError:类型错误,内建操作或是函数应于在了错误类型的对象时会引发类型错误
    ZeroDivisonError:除数为0,在用除法操作时,第二个参数为0时引发了该错误
    ValueError:值错误,传给对象的参数类型不正确,像是给int()函数传入了字符串数据类型的参数。

    捕获异常

    try语句一旦被检测出异常,剩下的语句将不会被执行

    几种搭配:

    1.try except

    1 try:
    2     sum = 1/0
    3 except ZeroDivisionError:
    4     print('出错')

    可以指明出错原因:

    1 try:
    2     sum = 1/0
    3 except ZeroDivisionError as reason:
    4     print('出错,错误原因:',str(reason))

    可以用多个except语句:

    1 try:
    2     f = open("nofile.txt")
    3     sum = 1/0
    4 except IOError as reason:
    5     print('出错,错误原因:',str(reason))
    6 except ZeroDivisionError as reason:
    7     print('出错,错误原因:',str(reason))

    可以用一个元组捕获多个异常:

    1 try:
    2     sum = 1/0
    3     f = open("nofile.txt") 
    4 except (IOError,ZeroDivisionError) as reason:
    5     print('出错,错误原因:',str(reason))

    用while True 和 else 组合,else后的语句在没有异常的情况下才执行,注意缩进,输入错误后会重新输入直到正确:

     1 while True:
     2     try:
     3         x = int(input("input first num"))
     4         y = int(input("input first num"))
     5         z = x/y
     6         print(z)
     7     except ZeroDivisionError:
     8         print("error,try again")
     9     else:
    10         break

    不管try语句中是否发生异常,finally语句后都会执行:

    1 try:
    2     x = int(input("input first num"))
    3     y = int(input("input first num"))
    4     z = x/y
    5     print(z)
    6 except ZeroDivisionError:
    7     print("error:")
    8 finally:
    9     print("结束")

    三十四  else和with

    else:

    if-else语句:

    和各种语言相同的用法,在条件语句中,与if语句搭配使用的else语句。如果if语句的条件表达式的结果布尔值为假,那么程序将执行else语句后的代码。

    elif(else-if)语句:

    elif是python提供的else-if语句,它检查多个条件表达式的值是否为真,并在为真时执行特定代码块中的代码。和else一样,elif是可选的,但是要注意的是,一个if语句可以跟多个elif语句,但最后只能有一个else语句

    while-else/for-else语句:

    在其他语言中,除了条件语句,是不会见到else分支的,但在Python中,while和for循环中,也是可以使用else语句的。它们的工作顺序为:在循环中使用时,else语句只在循环完成后执行,也就是说,break语句也会跳过else代码块,只要循环是正常结束,而不是通过break,else语句就会执行

    求素数:

     1 def fun(num):
     2     count = int(num/2)
     3     while count>1:
     4         if(num%count == 0):
     5             print("%d的最大公约数是:%d" %(num,count))
     6             break
     7         count -= 1
     8     else:
     9         print("%d是素数" %num)
    10 
    11 n = int(input("请输入一个整数:"))
    12 fun(n)

    执行结果:

    注意:Python中没有自增自减运算符,格式化输出多个字符要用元组的形式

    try-else语句:

    对于python中的错误和异常,try-except语句段,也可以和else连用,其功能和循环中的else语句没有多大区别:在try范围内没有检测到异常的时候,执行else子句。

    with:

    这个语法是用来代替传统的try...finally语法的。

    with EXPRESSION [ as VARIABLE] WITH-BLOCK

    1 try:
    2     with open("e://1.txt",'r') as f:
    3         for each_line in f:
    4             print(each_line)
    5 except IOError as reason:
    6     print("Error:",str(reason))

     如果用finally,若是文件不存在,也要走f.close(),这样的话文件存在打开后会自动关闭

    模块

    (1)import 文件名  比如想导入tmp.py,在主程序中写import tmp,并用tmp.调用函数

    (2)from 模块 import 函数(若要引用全部,写*)  在主程序中直接调用函数名

    (3)import 文件名 as 别名  在主程序中用 别名. 调用函数

    if __name__ == "__main__":

    简单来说当一个文件作为模块时,在if __name__ == "__main__":语句后的内容不能被调用

    原理:

    当作为模块时,可见__name__并不等于__main__,所以之后的东西不会执行,也不能被调用

    搜索路径:用列表的方式添加或删除

    包:创建一个文件夹,文件夹中存放相应模块,文件夹的名字就是包的名字,在文件夹中创建一个__init__.py的模块文件,内容可以为空

    使用包,import 包名.模块名

    标准库

    学习一个模块的方法,以timeit模块为例:

    1.IDLE中F1,索引

    2. IDLE中print(timeit.__doc__)查询模块说明

    3. dir(timeit)查询所有用法

    4. timeit.__all__查询对外接口

    5. timeit.__file__查询源码路径

    介绍timeit模块

    爬虫

    urllib

  • 相关阅读:
    埋点笔记整理02
    数据可视化笔记整理02
    埋点笔记整理01
    数据可视化笔记整理01
    魔力Python——我踩过的各种坑
    我们的竞争对手在看向哪里---对勺海公众号的挖掘与细分
    JDBC核心技术(获取数据库链接、数据库事务、数据库链接池)
    Vue封装axios
    JAVA_基础反射机制
    dispaly的Grid布局与Flex布局
  • 原文地址:https://www.cnblogs.com/raichen/p/4778094.html
Copyright © 2020-2023  润新知