美文网首页
python基础之文件处理、异常处理、代码调试

python基础之文件处理、异常处理、代码调试

作者: DayBreakL | 来源:发表于2019-09-24 22:42 被阅读0次

文件处理

  • open(file,mode)

    • file:文件名

    • mode:打开文件的模式

      常用的:read write append

      r w x

      r+ w+ x+

      rb rb+

      wb wb+

      ab ab+

    • 说明:

      1.file文件open之后默认是r,只读模式,如果写入内容,报io.UnsupportedOperation: not writable

      2.r+ 可读可写。先写再读的话,从头开始覆盖写,读光标之后的内容,读写随光标;先读再写的话,写的内容是从最后开始写。(进行一次读操作后,光标就到了文末)

      3.如果写入中文,注意编码格式open(file,mode,encoding='utf-8')

      4.w,只写,如果读内容,报错io.UnsupportedOperation: not readable

      5.w+,可读可写,无论是w还是w+,如果文件存在,就直接清空,再重写,如果文件不存在,就新建一个文件,然后写。

      6.a 追加 a+,如果文件存在,就直接追加写在后面,如果文件不存在,新建一个文件写

      7.重点掌握 r a

  • file.close()

    close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。

    close() 方法允许调用多次。当 file对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 使用 close() 方法关闭文件是一个好的习惯。

  • 按行读取

    file=open("python.txt","r",encoding='utf-8')
    rel=file.read() #读取所以内容
    rel=file.readline() #单行读取
    rel=file.readlines() #多行读取,返回的是列表
    print(rel)
    
  • 按行写入

    file=open("python.txt","a",encoding='utf-8')
    file.writelines(["first1\n","second\n"])
    # 列表的形式,换行加上`\n`
    
  • 上下文管理器

    with 语句是 Pyhton 提供的一种简化语法,适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,with 语句主要是为了简化代码操作。

    #冒号下的子代码执行完毕后,会自己进行关闭
    with open("python.txt","a",encoding='utf-8') as file:
        file.writelines(["first1\n","second\n"])
        
    

    使用了with语句,就可以不用写close了,虽然不写close对于我们没有什么明显的问题,但实际不close,仍然占用资源。

  • 如何移动光标 (待解决)

  • OS 文件/目录方法

    • 创建/删除文件夹

      import os
      #创建新文件夹/新目录
      os.mkdir("relics")
      
      # 创建跨级目录,用/符号来代表路径的不同层级,但是上级目录必须是已存在的
      os.mkdir("relics/monica") #相对路径
      os.mkdir("/Users/leitianxiao/PycharmProjects/python11/py_0906/relics/lida") #  绝对路径
      
      # 删除空文件夹 一级一级删除
      os.mkdir("relics/ho")
      os.rmdir("relics/ho")
      

      拓展1:删除非空文件夹

      import shutil
      shutil.rmtree("relics/ho")
      

      拓展2:如何新建文件open;如何删除文件

      os.remove("relics/ho/python01.txt")

  • 路径获取

    import os
    #获取当前路径的工作目录,不包括模块名
    path_1=os.getcwd()
    print(path_1)
    
    #获取当前文件所在绝对路径,包括模块名,__file__表示是当前文件本身
    path_2=os.path.realpath(__file__)
    print(path_2)
    
    • 如何拼接路径

      方法1:使用+拼接路径,记得加/

      new_path_1=os.getcwd()+"/python01"
      #使用该path创建目录
      os.mkdir(new_path_1)
      print(new_path_1)
      

      方法2:使用join拼接路径,不用加/

      join(path,*paths),需要确认前面的上级目录都存在

      new_path_2=os.path.join(os.getcwd(),"python02")
      os.mkdir(new_path_2)
      print(new_path_2)
      
  • 判断是文件还是目录

    os.path.isfile(数据) 判断是否是文件; os.path.isdir(数据)

    判断是否是目录

    print(os.path.isfile(__file__)) #True
    print(os.path.isfile(os.getcwd())) # False
    
    print(os.path.isdir(__file__)) # False
    print(os.path.isdir(os.getcwd())) #True
    
  • 判断文件是否存在

    os.path.exists(文件的路径)
    
  • 罗列出当前路径所有文件和目录

    print(os.listdir(os.getcwd()))
    

异常处理

异常:在运行代码过程中的任何错误,带error字样的都是异常

异常处理:我们对代码中可能会遇到的异常进行处理

我们为什么要处理异常?

友好的异常,遇到异常可以继续执行后面的代码

不友好的异常,遇到异常就卡死、崩溃

1.try...except...

import os
# 创建已存在的目录
os.mkdir("relics")
print("能执行到我吗?")

会报错:FileExistsError: [Errno 17] File exists:

'relics',且代码后的print不会执行,这样就是不友好的异常。

import os
try: #相当于警察
    os.mkdir("relics")  #嫌疑人,可能会出错的代码
except FileExistsError: # FileExistsError类型的异常,警力出动
    print("出了FileExistsError类型的错误") #抓捕归案
    
print("能执行到我吗?")

使用了try...except...后控制台的输出是:

出了FileExistsError类型的错误
能执行到我吗?

except后面可以指定异常类型,这样只有是该类型的异常时才会进行异常处理,如果不是该类型的异常,还是会报错,后面的代码仍然无法执行。

except后面可以使用Exception,表示无论什么类型的异常,都可以进行异常处理。

  • 处理某个错误 FileExistsError

  • 处理某种类型的错误 OSError

  • 处理所有错误 Exception

import os
try: #相当于警察
    os.mkdir("relics")  #嫌疑人,可能会出错的代码
except Exception: #任何类型的异常,警力出动
    print("出了FileExistsError类型的错误") #抓捕归案

print("能执行到我吗?")

捕捉到异常只是初级,进阶的方式,需要对异常进行处理,将错误的信息存储起来

import os
import shutil
try:
    os.mkdir("relics")
except Exception as e: #把异常信息存储到变量e
    print("错误信息是:{}".format(e))
    file=open("error.txt","a+")
    file.write(str(e)) #把错误信息写到文件中
    file.close() #关闭文件
print("能执行到我吗?")

参考:Python标准异常类

2.try...except...finally

无论前面有没有捕捉到异常,finally后面的代码都能执行

import os
try:
    os.mkdir("relics")
except IndexError as e: #故意写一个其他的类型的异常
    print("错误信息是:{}".format(e))
    file=open("error.txt","a+")
    file.write(str(e))
    file.close() #关闭文件
finally: # 就算上面报错了,后面的代码也能继续执行
    print("不管报不报错,肯定能执行到我")

控制台输出是:

Traceback (most recent call last):
  File "/Users/leitianxiao/PycharmProjects/python11/py_0906/do_file.py", line 6, in <module>
不管报不报错,肯定能执行到我
    os.mkdir("relics")
FileExistsError: [Errno 17] File exists: 'relics'

3.try...except...else

else后面的代码是跟try后面的代码一起的,try好它也好。try中的代码不报错,else后面的代码就执行,try中的代码报错,else后面的代码就不执行。

try:
    os.mkdir("relics")
except Exception as e: #把异常信息存储到变量e
    print("错误信息是:{}".format(e))
    file=open("error.txt","a+")
    file.write(str(e))
    file.close() #关闭文件
else: # 就算上面报错了,后面的代码也能继续执行
    print("try后面代码,不报错才执行我")

代码调试

以后讲

  • debug

    什么时候用debug?代码出错时,那行报错,断点就打在哪行

相关文章

  • python基础之文件处理、异常处理、代码调试

    文件处理 open(file,mode)file:文件名mode:打开文件的模式常用的:read write ap...

  • Python 文件处理

    Python 读文件处理 1. readline() with 处理开闭文件&文件异常处理 readline()内...

  • 2020-07-24

    异常处理 今天学习python的异常处理,感觉对于基础的同学来说,现在根本无法这么灵活的应用,至少是能写代码才可以...

  • python异常处理

    异常处理就是将会出现异常的代码进行相应处理,使程序可以运行下去。 python中使用异常捕获处理 a=1 try:...

  • Python异常处理

    Python中文件的操作 Python异常的处理 异常的引发 try⋯finally的使用

  • 2.1.3 Python面向对象之异常处理

    点击跳转笔记总目录 Python面向对象之异常处理 一、错误与异常 二、异常处理 三、什么时候用异常处理 一、错误...

  • python21-异常处理

    调试Python程序时经常会报出一些异常,这时就需要我们对异常进行捕获处理,防止程序终止,本篇主要围绕异常处理操作...

  • python-文件处理/异常处理

    很多时候Python程序的输入/输出是与用户进行交互,从用户那里使用input()等方法获取输入,并使用print...

  • Java基础系列-Exception异常处理

    原创文章,转载请标注出处:《Java基础系列-Exception异常处理》 一、概述 Java代码中的异常处理是非...

  • Python基础之文件处理

    文件处理 open(path,mode,encoding) mode: 'r'=只读 'w'=只写 'a'=追加 ...

网友评论

      本文标题:python基础之文件处理、异常处理、代码调试

      本文链接:https://www.haomeiwen.com/subject/ulabuctx.html