5.1 文件介绍
(1)文件可以永久地保存数据
(2)文件在硬盘中存储的格式是二进制
5.2 文件的读、写、追加操作(只能以字符串形式进行)
(1)文件读取
①打开:使用open()函数可以打开文件
open(file,mode='r',encoding)
其中,file = 文件名
mode = 'r',r(read)只读打开,w(write)只写打开,a(append)追加打开
encoding 表示文件编码格式:包括gbk和utf-8
使用一个变量来接受open函数返回的结果
a = open('PRIDE AND PREJUDICE.txt', 'r')#打开文件
a.read()#读取文件
a.close()#关闭文件
②读取:a.read()
③关闭:a.close()
(2)文件的写操作
#w表示写操作,若文件不存在会首先创建文件
b = open('b.txt','w',encoding ='utf-8')#加入encoding 可以正确打印出中文
b.write('hello world\n')
b.write('你好,中国\n')
b.close()
>>>
(3)追加文件
c = open('b.txt','a',encoding ='utf-8')
c.write('啦啦啦\n')
c.close
(4)读取文件补充
①文件.read(n),n代表一次读取多少字节的内容,默认读取全部
②在读取时,连续两次读取会将分行符'\n'算作一个字符读取,但在打印时只会显示分行
d = open('b.txt','r',encoding =' utf-8')
e = d.read(7)
e
>>> 'hello w'
f = d.read(7)
f
>>> 'orld\n你好'
③按行读取
文件.readline() 一次读取一行内容;文件.readlines()一次读取所有行内容
字符串.strip()可以去除空格
g = open('b.txt','r',encoding = 'utf-8')
h = g.readline()
h.strip()
>>> 'hello world'
④读取大文件
#假设b.txt为大文件
f=open('b.txt','r',encoding='utf-8')
while True:
buf = f.readline()
if buf:#容器可以直接作为判断条件,有数据即为True
print(buf,end='')
else:
break
f.close()
5.3 计算机的大小
(1)常见进制:
①二进制:只有0和1
②十进制:0-9
③十六进制:0-9,A,B,C,D,E,F
(2)①计算机中最小的单位bit(位),只有0和1
②字节:是计算机中基本的储存单位,byte
1byte=8bit;1kb=1024byte
计算机中满1024byte进1,1MB=1024KB
(3)100M宽带意思是100bits,除以8=12.5M/s
(4)优盘,硬盘标500G,是按10进制算,计算机是按1024进一,所以一般会少一些
(5)文件打开模式
①文本文件:txt,py,md等能够使用记事本打开的文件
②二进制文件:具有特殊格式的文件,mp3,mp4,rmvb,avi,png,jpg等
③文本文件可以使用文本方式打开文件,也可以使用二进制方式打开,二进制文件只能以二进制方式打开
5.4 应用:文件备份
#读取要备份的文件名称
file_name1 = input('请输入原文件名:')
index = file_name1.rfind('.')
file_name2 = file_name1[:index]
file_name3 = file_name1[index:]
#读取备份文件
f = open(file_name1,'r',encoding = 'utf-8')
buf = f.read()
f.close()
#准备备份
file_name = file_name2 + '[优化备份]' + file_name3
f_w = open(file_name,'w',encoding = 'utf-8')
buf1 = f_w.write(buf)
f_w.close()
5.5 文件操作和目录操作
对文件和目录的操作需要引入os包
(1)文件重命名
(2)删除文件
(3)创建目录名
(4)删除目录
(5)获取当前目录
(6)修改当前目录名
(7)获取当前目录中的内容
#创建文件
f = open('a.txt','w',encoding = 'utf-8')
f.write('1')
f.close
#文件重命名
import os
os.rename('a.txt','aa.txt')
#删除文件
import os
os.remove('a.txt')
#创建目录
os.mkdir('test')
os.mkdir('test/aa')
#删除目录
os.rmdir('test/aa')#删除了aa
#获取当前文件目录
os.getcwd()
#修改当前目录名
import os
os.chdir('test')
#获取指定目录中的内容
import os
os.listdir()
5.6 应用:批量创建和修改文件名
import os
def creat_files():#批量创建文件
os.chdir('test')#更改创建文件目录
for i in range(10):#创建10个文件
file_name = 'file_' + str(i) + '.txt'
f = open(file_name,'w',encoding = 'utf-8')
f.close()
os.chdir('../')#返回上一级目录
creat_files()
def modify_files():#修改文件名
os.chdir('test')
buf = os.listdir()#获取文件目录
for file in buf:
new_file = 'py_'+ file
os.rename(file,new_file)
os.chdir('../')
modify_files()