python学习第八天,,文件操作,切片相当于浅copy
Posted jiandanxie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习第八天,,文件操作,切片相当于浅copy相关的知识,希望对你有一定的参考价值。
切片的补充:
切片相当于浅copy:
a = [1,2,3,4,5] b = a[:] print(id(a),id(b),id(a[0]),id(a[0])) #2432299195592 2432299195528 #1795645664 1795645664
文件的操作:(分为三步)
1.打开文件.产生文件句柄 f
2.对文件句柄进行操作
3.关闭文件句柄
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘) f.read() content = f.close() print(content) f.close()
‘open()是python的内置函数,调用的是windows系统的命令‘
运行这三步报错的原因:
1.编码方式错误
2.路径不对
打开文件的模式以及对应的操作:
1.读
以mode=‘r的模式打开文字类文件(默认打开模式)
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘) b = f.read() print(b) f.close() #五种读取方法: f.read() 全部读取,以字符串形式输出 f.read(10),,n表示read,在r模式下是读n个字符,在rb模式下是读n个字节
f.readline() 按行读取
f.readlines() 全部读取,以列表的形式输出 #----------以上四种方式读大数据时占用内存 # 以for循环方式读取 #(for循环读可迭代对象,每次在内存中只读取一行,读后就删除不占用内存)
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r‘) for line in f: print(line,end=‘‘) #end=‘‘,清除换行符 f.close()
以mode=‘rb‘打开任何文件
with open(r‘a.txt‘,‘rb‘) as f1,open(r‘b.txt‘,‘a‘,encoding=‘utf-8‘) as f2: for line in f1: f2.write(line.decode())
以mode=‘r+‘打开文件(可读可追加)
1.先读后写
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r+‘) c = f.read(3) #c = f.read(3),不管是读三个还是全部的光标都移到了最后一行末尾 print(c) b = f.write(‘a‘) f.close()
2.先写后读
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘r+‘) f.write(‘简单‘) # 光标在开头,写入几个字符覆盖几个字符 f.close()
2.追加
a:只追加
f = open(r‘aaa.txt‘,encoding=‘utf-8‘,mode=‘a‘) # 没有aaa.txt文件则在同一个文件夹下创建该文件然后写入 #有aaa.txt文件则在末尾添加新内容 #有aaa.txt文件在末尾添加新内容+ 则换行追加
f.write() # 只能加字符串
f.writelines() # 可以将列表转换成字符串加入文件,也可以直接在末尾加入字符串,元素中不能由数字
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘a‘) f.writelines([‘a‘,‘b‘,‘c‘]) #字符串里不能由int类型 f.close()
a+:先追加再读,光标还在末尾,
想要读要添加:f.seek(0)
(光标在最后一行末尾,先读,则读不出内容.)
f = open(r‘a.txt‘,encoding=‘utf-8‘,mode=‘a+‘) f.writelines(‘aaa‘) f.seek(0) b = f.read() print(b) f.close()
3.写w:
f = open(r‘aaa.txt‘,encoding=‘utf-8‘,mode=‘w‘) #没有aaa.txt文件则在同一个文件夹下创建该文件然后写入 #有aaa.txt文件则清空原文件,并添加新内容
4.文件的其他操作方法:
f.readable()
f.writeable()
f.seek() 调整光标(按字节移动光标)
f.seek(0)
f.seek(0,2)将光标调整到最后一行末尾,,以字节的方式移动
(0) 光标在开头
(0,1) 光标在现在位置
(0,2) 光标的末尾,往后0个字节
(1,1) 光标在现在位置往后1个字节
f.tell() 获取到指针的位置
f.truncate() 对原文件进行截取
要在‘r+‘,‘a+‘模式下使用,不能再‘w‘,模式下使用
5.用with打开文件
with open() as f: pass #优点: # 可以主动关闭文件句柄 # 可以同时开启多个文件的句柄 with open(1) as f1, open(2) as f2
6.文件改的操作
文件的改的操作: 以读的模式打开原文件,产生一个文件句柄f1 以写的模式创建一个新文件,产生一个文件句柄f2 读取原文件内容,进行修改后,写入新文件 将原文件删除 将新文件重命名成原文件
import os with open(‘alex的深度剖析‘, encoding=‘utf-8‘) as f1, open(‘alex的深度解析.bak‘,encoding=‘utf-8‘,mode=‘a‘) as f2: for line in f1: new_line = line.replace(‘alex‘,‘SB‘) f2.write(new_line) os.remove(‘alex的深度剖析‘) os.rename(‘alex的深度解析.bak‘, ‘alex的深度剖析‘)
以上是关于python学习第八天,,文件操作,切片相当于浅copy的主要内容,如果未能解决你的问题,请参考以下文章