python基础(七)
文件的相关操作流程
计算机系统分为:计算机硬件,操作系统,应用程序三部分。
我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。
有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:
1 #1. 打开文件,得到文件句柄并赋值给一个变量 2 f=open('a.txt','r',encoding='utf-8') #默认打开模式就为r 3 4 #2. 通过句柄对文件进行操作 5 data=f.read() 6 7 #3. 关闭文件 8 f.close()
1.文件操作的函数
open(文件名(路径),mode="?",encoding="字符集"")
文件路径:
1).绝对路径,从磁盘的根目录或者从互联网上寻找一个路径.
2).相对路径,相对于当前程序所在的文件夹 ../上层文件夹 (这个使用的比较多)
文件的读写
1 f = open("哈哈哈哈哈", mode="r", encoding="UTF-8") 2 s = f.read() 3 print(s) 4 f.close()
不管你读取了多少内容,光标在哪儿,写入的时候都是在结尾写入,除非上来就写入,这是写入是在开头
最好用的读写同时存在的模式
r+ 读写模式,先读后写
w+ 写读模式,先写后读
1 f = open("阿西吧", mode="r+", encoding="utf-8") 2 s = f.read(3) # 读取三个字符 3 print(s) 4 f.write("不养了. 送人") # 在末尾写 5 f.close()
write模式很少用,因为会清空文件中的内容.
2.文件的相关操作
光标的操作
seek(偏移量,位置)
seek(0) 将光标移动到开头
seek(0,2) 将光标移动到末尾
truncate 截断
3.文件修改
1 # 引入模块 2 import os 3 # 打开目标文件 4 f1 = open("abc", mode="r", encoding="utf-8") 5 with open("abc", mode="r", encoding="utf-8") as f1, \ 6 open("abc_副本", mode="w", encoding="utf-8") as f2: 7 for line in f1: 8 line = line.replace("abc", "ABC") 9 f2.write(line) 10 # 删除文件 11 os.remove("abc") 12 os.rename("abc_副本","abc")
4.文件数据的相关处理
id,name,phone,car,home,salary
1,alex,10086,特斯拉,于辛庄,5000000
2,wusir,10010,五菱宏光,青年,400000
3,taibai,10000,魔板单车,松兰堡,30000
4,ritian,12345,小黄车,广东,30000
1 lst = [] 2 with open("2018-08-06.log", mode="r", encoding="utf-8") as f: 3 first = f.readline().strip().split(",") 4 for line in f: 5 dic = {} # 每一行一个字典 6 # 1,alex,10086,特斯拉 7 ls = line.strip().split(",") 8 for i in range(len(first)): 9 dic[first[i]] = ls[i] 10 lst.append(dic) 11 print(lst)