文件操作
-
文件操作函数
open(“文件名(路径)”, mode="?", encoding = “字符集”)
# mode 要记r w a r+ b(处理非文本)
# 绝对路径: 从磁盘的根目录开始寻找, 或者从互联网上寻找一个路径(下载路径)
# 相对路径:相对于当前程序所在的文件夹 (用的多)#正常模式
r只读
f = open ("…/aaaa", mode=“r”, encoding=“UTF-8”)
s = f.read() #一次读取一行是readline()
print (s)
f.close()
#循环:
f = open("…/a", mode=“r”, encoding=“utf-8”)
for line in f:
print(line.strip()) #strip()函数是去空格
f.close()w只写: (写前会清空原文件) f = open ("../aaaa", mode="w", encoding="UTF-8") f.write("shbdhsbh"\n) f.flush() f.close() a追加: f = open ("../aaaa", mode="a", encoding="UTF-8") f.write("shbdhsbh"\n) f.flush() f.close()
#rb,wb.ab, b 是bytes, 处理的是非文本文件
#将本地的图片移动到C盘下
f = open("…/XX.jpg", mode=‘rb’) #mode里有b,则encoding就不能给了
e = open(“c/XX.jpg”, mode=‘wb’)
for line in f: #读取内容不知道,不一定是一行,但是保证内容的完整性
e.write(line)
f.close()
e.flush()
e.close()#r+ w+ a+模式:
r+ 先读后写
f = open ("…/aaaa", mode=“r+”, encoding=“UTF-8”)
f.read() #读取全部,因为光标默认在最前面
f.write(“sdsfdasf”) #从末尾开始写. ******不管光标在哪,都是从末尾写
f.flush()
f.close()w+ 先写后读 (***清空原来的) f = open ("../aaaa", mode="w+", encoding="UTF-8") f.write("sfsfsfsf") #写是清空原有,在写入,此时光标在末尾,如果直接读,则为读取末尾,就是空白 f.seek(0) #将光标移动到开始 f.read() f.flush() f.close() a+ 先追加写后读 (与w+不同是不清空原文件) f = open ("../aaaa", mode="a+", encoding="UTF-8") f.write("ssssssss") f.seek(0) f.read() f.flush() f.close()
2.常用操作
1.seek光标
光标移动到开头
f.seek(0) -----> f.seek(0,0) 在开头,偏移量是0
光标移动到结尾
f.seek(0,2)
f.seek(偏离量,位置) 0是开头,1是当前,2是结尾
例如
f.seek(3,o) 从开头光标移动到第三个字节 *****read是读取字符,seek是字节 3字节=1字符
f.seek(3,1) 从当前位置往后移动三个字节
f.seek(0,2) 从末尾位置往后移动0个字节
f.seek(-3,2) 从末尾位置向前移动三个字符
2.tell 看光标位置在哪里
3.truncate 切断 默认是删掉光标后面所有内容,给参数,就是从头到光标位置保留,剩下删除
3.文件修改
1.引入os模块
2.打开目标文件,r
3.打开副本文件,w
4.从r中读取内容进行修改,写入到副本中
5.删除源文件
6.重命名副本
import os
#with open("walsn.py", mode="r", encoding="utf-8") as f1----> f = open("walsn.py", mode="r", encoding="utf-8")
#with open("walsn.py", mode="r", encoding="utf-8") as f1 会自动关闭文件
with open("walsn.py", mode="r", encoding="utf-8") as f1, \
open("walsn_副本", mode="w", encoding="utf-8") as f2:
for i in f1:
i = i.replace("boerte", "time")
f2.write(i)
os.remove("walsn.py")
os.rename("walsn_副本", "walsn.py")
- 将表里面的每一行改成字典 (表第一行是每一特征的名称,间隔是",")
list=[]
with open(“表名(路径)”, mode=“r”, encoding=“UTF-8”) as f:
first_line = f.readline().strip().split(",")
for line in f:
dic = {}
ls = line.split().split(",")
for i in range(len(first_line)):
dic[first_line[i]]=ls[i]
list.append(dic)
print(list)