Python——第六章 文件操作

6.1文件的使用

文件的两种类型:文本文件和二进制文件
文本文件:由单一特定编码的字符组成 例如:txt文件
二进制文件:二进制文件直接由比特0和比特1组成,文件内部数据组织格式与文件用途有关。例如:视频、图片
Python操作文件的流程
打开文件→读取文件内容→写入文件内容→删除文件内容→修改文件内容→关闭文件

6.1.1文件的打开和关闭

内置函数open()可以用指定模式打开指定文件并创建文件
在这里插入图片描述
注:路径中由于\是转义符,所以表示路径时,使用\或
在这里插入图片描述

F=open("D:\Python\A.txt",'r')
print(F.readline())
F=open("D:\Python\B.txt",'w')     #创建文本文件[如果文件不存在],覆盖文件[如果文件存在]
F=open("D:\Python\A.txt",'w')     #覆盖A文件(A文件被清空)
#F=open("D:\Python\A.txt",'x')     #若文件不存在使用X可以创建,若文件存在使用X会报错
F=open("D:\Python\A.txt",'a')     #覆盖A文件(A文件被清空)
F.write("人工智能A")
F=open("D:\Python\A.txt",'rb')    #转换成二进制读取
print(F.readline())
F=open("D:\Python\B.txt",'r+')     #创建文本文件[如果文件不存在],覆盖文件[如果文件存在]
F.write("人工智能B")                 #文本文件B中已经存在“人工智能B”
F=open("D:\Python\B.txt",'r')
print(F.readline())
F.close()

运行结果如下:
在这里插入图片描述

6.2文件的读写

6.2.1文件的读取

f.read(size=-1):从文件中读入整个文件的内容
参数可选,如果给出则读入前size长度的字符串或字节流。其结果是一个字符串。

f=open("D:\Python\A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
a=f.read()
print(a)
#绝对路径:D:\Python\A.txt 相对路径:在程序文件下的路径A.txt(在这里是指在D盘下Python文件下的0613文件下的A.txt)
#此时就可以修改成F=open("A.txt",'r')
f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
a=f.read()
print(a)
f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
b=f.read(10)
print(b)
f.close()

运行结果如下:
在这里插入图片描述

f.readline(size=-1):从文件中读入一行的内容
参数可选,如果给出,读入该行前size长度的字符串或字节流。其结果是一个字符串。

f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
a=f.readline()
print(a)
#继续读取下一行的话
b=f.readline()
print(b)
f.close()
f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
a=f.readline(9)
print(a)
#如果上一行未读取结束,继续读取下一行的话,读取从上一行结束位置开始,到上一行行末尾。
b=f.readline()
print(b)
f.close()

运行结果如下:
在这里插入图片描述

f.readlines(hint=-1):从文件中读入所有行,以每行为元素形成一个列表。
参数可选,如果给出读入hint行。文件打开后,对文件的读写有一个读取指针,当文件中读入内容后,读取指针将向前进,再次读取的内容将从指针的新的位置开始。

f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
b=f.readlines(1)  #如果只读取一行就把参数定为1.全部读取参数置空即可。
print(b)
f.close()

运行结果如下:
在这里插入图片描述

f.seek(offset):改变当前文件操作指针的位置。
offset的值: 0:文件开头;2:文件结尾。

f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
a=f.readlines()
print(a)
b=f.read()      #这是因为读取指针读取到了文件末尾,所以b读取不出任何值
print(b)
f.close()

运行结果:
在这里插入图片描述
可以发现b参数是未读取到任何值的,这是因为读取指针读取到了文件末尾,所以b读取不出任何值。所以需要加入函数seek,使指针回到文件初始位置

f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
a=f.readlines()
print(a)
f.seek(0)       #使指针回归到文件初始位置。
b=f.read()      #这是因为读取指针读取到了文件末尾,所以b读取不出任何值
print(b)
f.close()

运行结果如下:
在这里插入图片描述
文件的循环读取
可以使用遍历循环逐行遍历文件

f=open("A.txt",'r', encoding="utf-8") #中文读取需要添加 encoding="utf-8"
for line in f:
    print(line)
f.close()

在这里插入图片描述

6.2.2文件的写入

f.write(s):向文件中写入字符串s,每次写入后,将会记录一个写入指针,该方法可以反复调用,将在写入指针后分批写入内容,直至文件被关闭。

f=open("B.txt",'w') #中文读取需要添加 encoding="utf-8"
f.write("俯首南枝百日枯,半坡古木半坡丛。\n")
f.write("愿守禅道千年湖,一朝菩提一朝荣。")
f.close()

f.writelines(lines):直接将列表类型的各个元素连接起来写入文件f。

ls=['俯首南枝百日枯','半坡古木半坡丛\n'\
    '愿守禅道千年湖','一朝菩提一朝荣。\n'\
    '【表格写入】']#'\'可以用来连接
f=open("B.txt",'w') #中文读取需要添加 encoding="utf-8"
f.writelines(ls)
f.close()

6.3数据的维度

根据数据的关系不同,数据组织可以分为:一维数据、二维数据、和高维数据。
在这里插入图片描述
一维数据的存储方式
在这里插入图片描述

ls=['北京','广州','上海','天津','重庆']
f=open("city.txt",'w') #中文读取需要添加 encoding="utf-8"
a=','.join(ls)
print(a,type(a))
f.write(",".join(ls))
f.close()
#join函数
#将序列中的元素以指定的字符连接生成一个新的字符串

运行结果如下:
在这里插入图片描述
CSV格式
在这里插入图片描述

#创建CSV文件
ls=['北京','广州','上海','天津','重庆']
f=open("city.csv",'w') #中文读取需要添加 encoding="utf-8"
f.write(",".join(ls))
f.close()
#从CSV文件中进行读取
f=open("city.csv",'r')
ls=f.read()
ls_new=ls.split(',')
#split()函数通过指定分隔符对字符串进行切片,返回列表。
f.close()
print(ls_new)

运行结果如下:
生成了csv文件
在这里插入图片描述
从CSV文件中成功读取
在这里插入图片描述
二维数据的存储方式
在这里插入图片描述
在这里插入图片描述

ls=[['指标','2014年','2015年','2016年'],['居民消费价格指数','102','101.4','102'],
    ['食品','102','103.1','101.4'],
    ['烟酒及用品','994','102.1','101.5'],
    ['衣着','102.3','102.7','100.5']]
f=open("cpi.csv",'w')
for row in ls:
    f.write(",".join(row)+ "\n")
f.close()

运行结果如下:
在这里插入图片描述
读取二维数据

f=open("cpi.csv",'r')
ls=[]
for line in f:
    a=line.strip('\n')
    print(a)
    b=a.split(',')
    print(b)
    ls.append(b)
f.close()
print(ls)

等价于代码:

f=open("cpi.csv",'r')
ls=[]
for line in f:
    ls.append(line.strip('\n').split(','))
f.close()
print(ls)

运行结果如下:
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值