三、python文件操作和运算符

文件操作

对文件的操作流程:

  1. 以指定模式打开一个文件,得到文件句柄并赋值给一个变量
  2. 通过文件句柄的操作以实现对文件的读写操作
  3. 关闭文件

1、以指定模式打开一个文件,得到文件句柄并赋值给一个变量
file = open(“filename”,mode=“r”,encoding=“utf-8”)
##获得文件的 句柄,并以utf-8编码以读模式打开

2、通过文件句柄的操作以实现对文件的操作
只要对文件进行过读或写操作,那么文件的光标就会发生移动。

读文件:以读模式r打开文件

读取文件整体内容至内存单元:file.read()
注意:文件句柄存在文件光标,起初光标在第一行,但read()过一次后,光标便在最后行最后一个内容之后。所以对file再次read(),将没有内容

按指定数量读取文件的内容至内存单元:file.read(n)
读取n个字符.需要注意的是.如果再次读取.那么会在当前位置继续去读⽽而不 是从头读, 如果使⽤用的是rb模式. 则读取出来的是n个字节

按行读文件至内存单元:file.readline()
函数()中加了数值则读取指定数的字符;读了一行或者几个字符后光标也会相应的移动。

读取文件生成列表,并将每行作为列表的一个元素:file.readlines()
注意:此方式需要先将文件全部送入内容,大文件不合适。建议使用for循环

for line in f:
    print(line)

写文件内容:以写模式w打开文件
注意:对已存在的文件以写模式打开,则先打开文件,并清空文件内容然后开始写内容

file.write(str) 将指定字符串写入文件,返回的是写入的字符长度

追加文件内容:追加模式(a)打开文件,打开文件后光标将移动到内容最后一个

rb 读二进制形式读取文件 ,多用于非简单文字的文件

wb 将二进制形式的内容写入文件

r+ :打开一个文件用于读写。文件指针将会放在文件的开头。

  • 如果先读后写,则先读文件内容,光标按读的字符数发生移动;再进行写操作时将内容追加到文件最后一个内容后
  • 如果先写后读,则先开始写内容,写的内容根据内容会覆盖文件原有内容,光标根据写的字符数发送移动;将从光标后开始读取内容
    注意:并非完全覆盖,根据写的内容长度进行覆盖,如果写的内容长度比原有内容短,则原有内容后面部分会保留

w+ 写读模式:文件若已经存在就先清除内容再写,写后光标发生移动;接着读的话此时光标后面没内容

a+ 追加读文件:先追加内容后,此时光标在最后一个位置,接着读的话光标后面没内容

打开文件的方式如果没有带b,则open默认在打开时会完成转换成指定编码。

with语句
为了避免打开文件后忘记关闭,可以通过管理上下文,即:
with open(‘log’,‘r’) as f:

文件的函数操作
file.tell() 获取读文件时,光标停留在第几个字符
file.seek() 光标回到某个指定位置,。seek函数的参数有两个,第一个表示偏移量,以字节为单位;第二个表示偏移的起点,默认是0,表示开头,1表示当前位置,2表示末尾。
file.seekable() 判断文件是否可以移动光标
file.readable() 判断文件是否可读
file.flush() 将内存缓冲中的数据一次性写入到硬盘中
file.truncate() 从文件开头按指定的字符数进行截断

文件操作举例
修改文件内容:
为针对大文件速度缓慢,可以对原文件逐行读取,再逐行写入到新文件,符合条件的内容先进行修改,然后才写入到新文件中。

f1=open("pks","r")
f2 = open("pks_new", "w")

line = f1.readline()
while line:
    f2.write(line)
    line =f1.readline()

f1.close()
f2.close()

大文件读取:

f = open("123.dat",'r')
cont = f.read(10)
while len(cont) >0 :
    print(cont)
    cont = f.read(10)
   f.close()

大文件复制:

f1 = "123.dat"
f2 = "123.dat.bak"

fs1 = open(f1,'r')
fs2 = open(f2,'w')
cont1 = fs1.readline()

while len(cont1)>0:
    #写入
    fs2.write(cont1)
    cont1 = fs1.readline()
fs1.close()
fs2.close()

python的运算符

算数运算
以下假设变量:a=10,b=20
在这里插入图片描述
比较运算
以下假设变量:a=10,b=20
在这里插入图片描述
赋值运算
以下假设变量:a=10,b=20
在这里插入图片描述
逻辑运算
在这里插入图片描述
针对逻辑运算的进一步研究:
在没有()的情况下not 优先级高于 and,and优先级高于or,即优先级关系为( )>not>and>or,同一优先级从左往右计算。

成员运算:
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
在这里插入图片描述
判断子元素是否在原字符串(字典,列表,集合)中:
例如:
#print(‘喜欢’ in ‘dkfljadklf喜欢hfjdkas’)
#print(‘a’ in ‘bcvd’)
#print(‘y’ not in ‘ofkjdslaf’)

Python运算符优先级
以下表格列出了从最高到最低优先级的所有运算符:
在这里插入图片描述

发布了40 篇原创文章 · 获赞 2 · 访问量 2080

猜你喜欢

转载自blog.csdn.net/weixin_42155272/article/details/93850186