文件基础——读写,存储

导读:本篇文章讲解 文件基础——读写,存储,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

文件基础:

在这里插入图片描述

常见编码:在这里插入图片描述
ASCLL编码表:常见的 0是48;A 是65;a是97
• 8位二进制表示一个字符
• 能够表示字母、数字等

UTF-8 可以编译中文

Python常见的库:

  1. os 提供了大量操作文件、目录的方法。
  2. pathlib2 文件系统路径操作
  3. openpyxl 操作Excel文件。
  4. python-docx 操作Word文件。
  5. python-pptx 操作PowerPoint文件。
  6. opencv-python 图像处理模块,提供了强大的图像处理相关功能。

打开文件:
打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用打开文件后操作

open(file, mode=‘r’) #mode= 可写可不写

使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法
◼ file: 必需,文件路径(相对或者绝对路径)“文件名”。
◼ mode: 可选,文件打开模式。

  1. ‘r’ 读文件(read)
  2. ‘w’ 写文件(write)
  3. ‘a’ 在文件尾部追加内容(append)
  4. ‘b’ 二进制文件(图像文件、binary)
  5. ‘t’ 文本文件(text)
  6. ‘+’复合(r+:读写、写时从头开始覆盖;w+:读写、清空源文件后读写)

关闭文件:
使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

file.close()

但是使用with ….as….,隐式调用close()方法关闭文件

with open(‘file.txt’, ‘r’) as f:
关闭文件。关闭后文件不能再进行读写操作。不用输入close

文件属性:

  1. file.name:返回文件的名称;
  2. file.mode:返回打开文件时,采用的文件打开模式;
  3. file.encoding:返回打开文件时使用的编码格式;
  4. file.closed:判断文件是否己经关闭。

练习:

f=open("lzs.txt",'r')
print(f.closed) #查看文件是否关闭状态,此时没关闭,会返回Flase
f.close()#之前打开现在关闭
print(f.closed)#此时会返回True
with open("lzs.txt",'r')as f:  #用这种打开
    print(f.closed) #此时判断是否关闭,返回Flase;应为还在文件里
print(f.closed)#现在在文件外,返回True

with open("lzs.txt",'r',encoding="utf-8")as f: #文件有中文,要换个编码表,用encoding
    x=f.readlines()  
    for i in x:
        print(i,end="")

读取文件:

函数read(): 单独read读取中有中文或者中文符号会显示错误, 原因是编码不同,所以后面添加 encoding=”utf-8”,进行转码就可以输出中文。

逐个字节或者字符读取文件中的内容,有参数时,读取参数个字节或字符;

with open("lzs2.txt",'r')as f:
    x=f.read() #自我理解:读取字节,字符,数字;(6)中带数字代表读取多少个,6代表就读取6个
	print(x,end=" ")# 价格end=" " 原因是函数输出之后会有一行空白行,可以用end=" " 进行删除。
with open("lzs.txt",'r',encoding="utf-8")as f:  #这个文件中就是中文,就可以输出出来,文件有中文,要换个编码表,用encoding
    x=f.readlines()
    for i in x:
        print(i,end="")

函数readline():
with open("lzs2.txt",'r')as f:
    x=f.readline()#读取文件中的行;()中的数字代表读取这一行中的几个,输入数字时,末尾没有空行,但是输入数字不大于读取大小
    print(x.strip()) #.strip 作用:把末尾的'\n'删掉  和end="" 一样,两种方法。

函数readlines(): 一次读取文件中的多行内容,

x=f.readlines()  #读取出来的是列表

with open("lzs2.txt",'r')as f:
    x=f.readlines()   #此时x是个列表
    for i in x: #可以进行遍历(循环输出)它
        print(i,end="")

输出结果:

12324543645247
1243253543
2143325
1312233421
43154

格式控制:

在读取的时候可以进行格式控制;
在这里插入图片描述
读取文件(lzs2.txt)的内容

from datetime import datetime 导入模块
x="lzs2.txt"
with open("lzs2.txt",'r') as f:
    for i in f.readlines():
        mydate,price = i.split(',')# 进行定义赋值变量 用split以,分开
        # print(mydate,end=" ")
        # print(price)
        dt=datetime.strptime(mydate,"%Y/%m/%d") #strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
        # print(dt)
        price=float(price) #这里将price转换成浮点数,为了外观有小数点,实际转不转都行,因为price赋值的就是数字
        # print( dt,end=" ")
        # print(price)
        print("时间是:",str(dt.date()),"销售额:",str(price))#这里使用str转换因为之前转换了,如果原先不是字符串或数字,就需要转了

输出结果:
时间是: 2021-06-02 销售额: 1567.0
时间是: 2021-06-03 销售额: 1244.0
时间是: 2021-06-04 销售额: 4353.0
时间是: 2021-06-05 销售额: 1324.0

存储文件:

函数write():
写入一个字符或者写入一个字节串

f.write(‘hello,world’)

x="lzs3.txt"
with open(x,'w',encoding="utf-8") as f: #如果之前没有x这个文件,这一步会直接生成一个新的文件,w是写功能
    f.write("今年必成大气,挣大钱,必定的!!") #写中文不支持,前面必须有一步编码转换

y="lzs4.txt"
with open(y,mode='r+',encoding="utf-8") as f:#r+ 是读写,从原文件开始从头覆盖写,w+是清空原文件,从头开始写。
    f.write("家人一定平安幸福!!!")

函数writelines( )
用于向文件中写入一序列的字符串或字节串,序列可以是列表、元组、字典、集合等;

writelines()

x=open("lzs.txt","r",encoding="utf-8")
y=open("./新建文件夹/新.txt","w",encoding="utf-8")
y.writelines(x.readlines())# 把x里的内容复制到y里面,因为y原先文件已经存在所以会把y里的文件直接替换掉
#所以y一般是空文件,或者是直接创建的新文件
x.close()
y.close()#用open打开一定要用close关上

格式控制:

from datetime import datetime
file = "file2.txt"
with open(file, 'w') as f:
	dt = datetime.strptime("2020/6/25", '%Y/%m/%d')  #将数据进行格式化输出
	result=str(dt.date()) #
	f.write(result)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/61414.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!