文件操作
文件操作作用
对数据进行存储
如果数据都存在于内存中,容易导致内存溢出,或者是程序异常中断时,数据丢失。
文件的基本操作
打开/读写/关闭
文件打开
open(name, mode)
name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)
mode: 设置打开文件的模式(访问模式):只读、写入、追加等。
#只读方式打开文件
f = open('data.txt', 'r') #如果文件不存在会报错
print(f.read()) #输出文件中的内容
f.read(4) # 从第四个字节开始读
#f.write('ddd') #会报错,因为是以只读方式打开的文件
f.readlines() #将文件中的数据按行读取,并且保存到列表中
f.readline() #每次只读取一行
f.close()
#打开文件用于写入
f = open('data.txt', 'w') #如果文件不存在,会新建一个同名文件。如果文件存在,会从开头开始编辑,即原有的内容会被删除
f.write("123")
datat_list = ['aaa','bbb','ccc']
f.writelines(data_list)
f.close()
#打开文件用于追加
f = open('data.txt', 'a') #如果文件不存在,会新建文件。如果文件存在,文件指针会放在文件的结尾。
f.write("12345") #不会换行,追加在原有数据之后
f.close()
# 在模式后面添加b 或者 + 或者 b+
f = open('data.txt', 'r+')#不会直接清空原有的内容,但是文件指针在开头,会覆盖掉原来的部分内容
f.wirte('test')
f.close()
# f = open('data.txt', 'rb') #二进制读写
# f = open('data.txt', 'w+') #可写可读,但是也会先清空文件内容
文件指针——光标偏移
seek(偏移量,起始位置)
设置指针其实位置 0开头,1当前,2结尾
f = open('data.txt', 'r')
print(f.readline())
f.seek(0)
print(f.readline()) #和第一次输出一样,指针被设置回起始位置
文件与文件夹操作
重命名
import os #导入系统模块
# os.rename(当前名称, 新的名称) #重命名 文件 文件夹
os.rename('data.txt', 'newdata.txt')
os.rename('D:\\dirname', 'D:\\newdirname')
删除
#删除文件
os.remove('data.txt')
#删除文件夹
os.rmdir('data\\data2') #删除一个文件夹
新建文件夹
os.mkdir('data\\data2') #新建一个文件夹,需要先有文件夹data
os.makdedirs('data\\data2') #创建整个路径的文件
查看文件夹内容
os.listdir(dirpath) #返回一个列表,包含对路径内该层级的文件夹内容
data = os.walk(dirpath) #遍历整个路径下内容,发现文件夹就继续查看,深度优先查找,返回一个生成器对象。
for i in data:
print(i) #输出结果是,(文件路径,包含文件夹,文件)
获取当前路径
import os
print(os.getcwd()) #输出当前所在的文件路径
复制
#用os模块,需要用到popen命令行方式
import os
os.popen('copy data.txt D:\')
#用shutil 模块
import shutil
shutil.copy('data1.txt','F:\\data\\')