python基础(六)

一、读写文件

文件基础操作:open, close, read, write
文件指针:标记开始读取数据的位置
执行read之后,默认情况下指针会移动到文件末

1.open()

def open(file, mode=‘r’, buffering=None, encoding=None, errors=None, newline=None, closefd=True):
参数:最常使用的是两个位置参数和一个关键字参数:file,mode,encoding
file:test.txt
绝对路径:从根目录开始的路径,一个完整的路径
相对路径:
.:当前目录 …上一级目录
mode:代表操作文件的方式
Character Meaning #默认格式为文本只读
‘r’ open for reading (default)
‘w’ open for writing, truncating the file first
‘x’ create a new file and open it for writing
‘a’ open for writing, appending to the end of the file if it exists
‘b’ binary mode #针对二进制或字节
‘t’ text mode (default)
‘+’ open a disk file for updating (reading and writing)
‘U’ universal newline mode (deprecated)
buffering:缓冲,都是整数
0,代表不缓冲,关闭
1,代表文本模式下,缓冲一行
*>1: 针对我们的二进制
encoding:编码方式(针对二进制进行编码)
error:错误
newline:新行
closefd:关闭文件描述符
返回值
返回一个file object
重要的是(常用的四个参数):*file,*mode,*encoding,buffering

1.1 写一个文本文件text:内容为西安培华学院,读取文本文件的内容,复制这个文件text,拷贝为text2

str_data = "西安培华学院"
data1 = open("text", "wt", encoding="UTF-8")
result1 = data1.write(str_data)
data1.close()
data2 = open("text", "rt", encoding="UTF-8")
result2 = data2.read()
data2.close()
data3 = open("text2", "wt", encoding="UTF-8")
result3 = data3.write(result2)
data3.close()

1.2找一张图片,复制这个图片到copy.jpg

data = open("1.jpg", "rb")
result = data.read()
print(result)
data.close()
data2 = open("2.jpg", "wb")
result2 = data2.write(result)
data2.close()

1.3给定一个列表[“string1”, “string2”, “string3”],将列表内容写入文件,每一个元素一行

使用字符串中的join操作,将‘\n’插入到列表每个元素的中间,来达到换行 打印的目的.

list_data = ["string1", "string2", "string3"]
data = "\n".join(list_data)
with open("text3", "wt", newline="") as file_obj:
    file_obj.writelines(data)

2.模块

csv
csv.reader(csvfile, dialect=‘excel’, **fmtparams)
返回一个 reader 对象,该对象将逐行遍历 csvfile。
json:一种轻量级的数据交换格式,易于人阅读和编写
dump:将python对象转换为json格式的数据
与dumps区别:dumps:序列化一个对象;dump:将一个对象序列化存入文件
load:将json格式的数据转换为python对象json.load
与loads区别,一个从字符串加载,一个从文件加载

二、异常

1.错误与异常

错误(SyntaxError):运行前发生的(无法处理)
异常:运行中发生的(可被处理)

2.异常处理的语法

try:
要执行的语句(有可能遇到异常)
A + B => 1 + 1正常执行
=>1 + “1”执行的时候遇到异常
except:异常处理语句
except:异常处理的语句N
else:try中的语句正常执行,要执行的操作
finally:始终要执行的语句

2.1except 异常类型(可以省略)

as name(变量赋值给name):做异常处理
#except捕获,异常类型:捕获哪一种异常
#as name:是将捕获到异常赋值给name(变量)
那就可以用name去访问异常
多个except的用途:
1.处理多个异常:异常类型2 异常类型3
2.针对出现的多个不同的异常可以做不同处理:
处理2
处理3
finally:#最后
最后执行的语句
#1.finally中的语句一定是最后执行
2.finally中的语句不论是否出现异常都会执行
问题1:异常处理的语句,处理很多不同异常的时候,执行的都是相同的操作
try:
statement
except(exception1,exception2,exception3):
common action
问题2:主动抛出异常
raise语句:强制触发指定的异常

3.常见的异常处理(try中的异常只能被捕获到一次)

try:
   1 + "1"
   1 + 1
except ZeroDivisionError:
   print("ZeroDivisionError")
except IndexError:
   print("IndexError")
except KeyError:
   print("KeyError")
except ValueError:
   print("ValueError")
except Exception:
   print("最后捕获")
else:
   print(1 + 1)
finally:
   print("Finally")

#执行结果   由于在前四次中未能捕获异常,在第五次捕获到异常
最后捕获
Finally

4.用异常处理来进行读写文件的文件关闭

try:
    file_obj = open("1.txt", "w")
    file_obj.write("123")
    1/0
except:
    print("处理异常")
finally:
    file_obj.close()
    print("finally")
#执行结果
处理异常
finally

5.主动抛出异常

使用raise可以强制抛出一个异常,当try中语句可以正常执行时,我们可以使用raise强制抛出一个我们想要处理的异常类型,然后在except中捕获去处理异常。

try:
    1
    raise IndexError
except IndexError:
    print("Handle IndexError")
#执行结果
Handle IndexError

三、模块和包

1.模块

模块:就是一个文件.py文件
主模块:当前正在运行的.py文件
模块名:不带后缀的.py文件的文件名
全局变量name 来访问模块(获取模块名)
导入模块的时候,一定是在模块的顶部导入
导入一个模块的实质,是在运行模块的时候,将导入的语句视为执行这个模块
导入模块的语法
import module_name
import module_name1, module_name2
如果你要调用模块中内容,怎么调用
module_name.变量/函数/类
module_name.function_name()
from module_name import function_name
from module_name import *(一般不推荐使用)
*:所有,但是有限制,导入所有不以下划线_开头的名称
模块或模块中内容重新命名
import module_name as new_name
import module_name as mn
from module_name import function1 as f1

2.包

什么是包:管理模块的命名空间,python只把含__init__.py文件的目录当成包
__
__init____.py的作用
:该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。这样可以防止以string 等通用名称命名的目录,无意中屏蔽出现在后方模块搜索路径中的有效模块。

包和目录的区别:目录在pycharm中就是一个文件夹,用来放置资源文件。

对于包而言,与目录不同之处就是包会自动创建一个__init__.py文件。 包中包含一个模块和一个__init__.py文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值