什么是文件?
存储在计算机的存储设备中的一组数据序列就是文件
不同类型的文件通过后缀名进行区分
文本文件:编码格式不同,所占磁盘空间的字节数不同(比如北京你好
,用gbk编码是8个字节,utf-8则需要编码为12个字节)
二进制文件:没有统一的编码,文件直接由0或1组成,需要指定的软件才能打开
Python操作文件的步骤:
1、打开文件
变量名=open(filename,mode,encoding)
filename:要打开文件的完整路径
mode:文件的打开模式:读还是写...
encoding:文件的编码格式
若要打开的文件不存在,则会在磁盘上创建文件
2、操作文件
变量名.read()
变量名.write(s)
3、关闭文件
变量名.close()
代码实例:
def my_write():
# 1
file=open('a.txt','w',encoding='utf-8') # 若欲打开文件和当前代码文件在同一目录,直接写欲打开文件名就行;以utf-8的格式编码
# 2
file.write('伟大的中国梦')
# 3
file.close()
def my_read():
# 1
file=open('a.txt', 'r', encoding='utf-8')
# 2
s=file.read()
# 3
file.close()
print(s)
# 主程序运行(似乎就是只有在当前文件中运行Python才会执行的分支)
if __name__=='__main__':
my_write()
my_read()
# 重复运行这个代码,新产生的文件内容里面也只有一个'伟大的中国梦'
文件未被打开时:(磁盘)存储状态
文件被打开后:(内存)占用状态
文件的打开模式 | 模式说明 |
---|---|
r | 以只读模式打开,文件指针在文件的开头;若文件不存在,程序抛异常 |
rb | 以只读模式打开二进制文件,如图片文件 |
w | 覆盖写模式,文件不存在就创建,文件存在则内容覆盖 |
wb | 覆盖写模式写入二进制数据,文件不存在就创建,文件存在就覆盖 |
a | 追加写模式,文件不存在则创建;文件存在则在文件末尾追加内容 |
+ | 与 w/r/a 等一同使用,在原功能的基础上增加 同时读写功能 |
读写方法 | 描述说明 |
---|---|
file.read(size) | 从文件中读取size字节/字符,若没有给定参数,则读取文件全部内容 |
file.readline(size) | 读取文件中的一行数据,若给定参数,则为读取这一行中的size字节/字符 |
file.readlines() | 从文件中读取所有内容,结果为列表类型 |
file.write(s) | 将字符串s写入文件 |
file.writelines(lst) | 将内容全部为字符串的列表lst写入文件(若有整数、浮点数则写不进去) |
file.seek(ooffset) | 改变当前文件操作指针的位置,英文占一个字节,中文gbk编码占两个字节,utf-8编码占三个字节 |
代码实例:
def my_write(s):
file=open('b.txt','a',encoding='utf-8')
file.write(s)
file.write('\n')
file.close()
# 将列表中的内容写入文件
def my_write_lst(lst):
file=open('b.txt','a',encoding='UTF-8')
file.writelines(lst)
file.close()
if __name__=='__main__':
my_write('伟大的中国梦')
my_write('北京欢迎您')
lst=['姓名\t','年龄\t','成绩\n','张三\t','30\t','98\n']
my_write_lst(lst)
def my_read(filename):
file=open(filename,'w+',encoding='UTF-8')
file.write('你好啊') # 写完成后,文件的指针在最后
# seek修改文件指针的位置
file.seek(0) # 文件指针偏移设置为0,最开始的地方
# s=file.read() # read()不指定参数就是读取文件全部内容;
# s=file.read(2) # 读取两个字符(不是字节),你好
# s=file.readline() # 读取一行的数据
# s=file.readline(2) # 读取一行中的两个字符
s=file.readlines() # 读取所有,一行为列表中的一个元素,s是列表类型
print(type(s))
print(s)
if __name__=='__main__':
my_read('d.txt')
def copy(src,dst):
# 文件的复制就是边读边写操作
file_src=open(src,'rb')
file_dst=open(dst,'wb')
s=file_src.read() # 源文件读取所有
file_dst.write(s) # 目的文件写入所有
# 先打开的后关,后打开的先关
file_dst.close()
file_src.close()
if __name__=='__main__':
src='./图片.png' # . 代表当前目录
dst='../test.png'
copy(src,dst)
print('文件复制完成')