Python之文件和数据格式化学习笔记

553 阅读9分钟

@TOC

1,前言

职场人士都在学Python,说是可以文件和数据,处理Word、xlsx、PDF等等非常方便。学到了就是加分,升职不是梦。当然这一章不会有这部分内容,没学,不会。但是这可能是一个入门,用Python打开文件?修改文件?·····

2,文件的使用

2.1,文件的类型

2.1.1文件的理解

提起类型,必先理解这是什么,文件是啥呢?

  • 文件是数据的抽象和集合
  • 文件是存储在辅助存储器上的数据序列
  • 文件是数据存储的一种形式
  • 文件展现形态:文本文件和二进制文件

打了四行定义,不长不短。说说我的看法叭。把数据看成抽象,多条相同类型的数据就要放进一个文件,此时此刻,文件就像是一个大集合。在这里插入图片描述 成绩表.xlsx里面就是有很多数据。把这些数据都放到成绩表.xlsx里面,因此像个大集合。 Q:什么是辅助存储器? 电脑主机板外的储存器。如硬碟、光碟、随身碟等。就是放盘里。这里应该是指文件夹吧?文件夹也是一种文件。 存储在硬盘里,有顺序的排列着。 好,什么是二进制文件和文本文件

2.1.2,文本文件与二进制文件

放在前面:从文件的名字可以看出他们文件的展示方式不同,看到二进制不就是0和1组成的一大串数字吗? 所有的文件都是以二进制的方式存储。。我好闲记得CPU里面都是二进制来着。 所以文件都采用这两种方式展示,

  • 文本文件

由单一特定编码组成的文件,utf-8 由于存在编码,也被看成是存储着的长字符串 适用于例如:.txt文件、.py文件

-二进制文件 直接由比特0和1组成,没有同意字符编码 一般存在二进制0和1的组织结构,即文件格式 适用于例如:.png文件、.AVI文件

这就是他们的区别,实际上并不难,一个字符串,一0和1

2.2,文件的打开和关闭

以上都是叙述,那么正文现在开始! 文件的操作步骤:打开----操作-----关闭

  1. 文件的打开:
a = open(  ,  )

open打开的意思, 文件的存储状态变为文件的文件的占用状态 这句语句应该是这样滴 在这里插入图片描述

<变量名> = open(<文件名>, <打开模式>)

文件名里面包括文件的路径和名称,如果和源文件同一路径可以忽略不计。 打开模式:文本or二进制、读or写 还有其他的打卡方式:

文件的打开方式描述
"r"只读模式,默认值,如果文件不存在返回FileNotFoundError
"w"覆盖写模式,文件不存在则创建,存在则完全覆盖
“x"创建写模式,文件不存在则创建,存在则返回FileExistsError
“a”追加写模式,文件不存在则创建,存在则在文件最后最佳内容
"b"二进制文件模式
"t"文本文件模式。默认值
"+"与r/w/x/a一同使用,在原功能基础上增加同时读写功能
覆盖、创建、追加我想都不难理解吧。
例如:
f = open(f.txt, w)
  1. 文件的关闭:
a.close()#<变量名>.close()

close关闭的意思。有打开文件则就有关闭文件,因此open().close()是一对。。

2.3,文件的内容读取

我们先定义一段文本: 在这里插入图片描述

打开这段文本的代码

f = open("1.txt","r")
操作方法描述
.read(size=-1)读入全部内容,如果给出参数,读入前size长度
>>>s = f.read(5)
linux#size为5
>>>s = f.read()
linux
Python
c
Java
c++#size没有参数在打印全部文本
操作方法描述
.readline(size=-1)读入一行内容,如果给出参数,读入该行前size长度
>>>s = f.readline(3)
lin
>>>s = f.readline()
linnx
操作方法描述
.readlines(hint=-1)读入文本所有行, 一每行为元素形成列表,如果给出参数,读入前hint行
>>>s = f.readlines(-1)
['linux\n', 'Python\n', 'c\n', 'Java\n', 'c++']

这就是这三个方法,论这三个方法有什么区别,很简单

  • read:用通俗易懂的话说读全文,返回字符串类型
  • ReadLine:读这行,还是字符串类型
  • Readlines:可以看做读全文,每一行为元素形成一个列

提一下遍历文本

  • 全文遍历:简单实用的.read()方法,
  • 逐行遍历:分享一段代码
>>>f = open("1.txt","r")
>>>for line in f.readlines(-1):
>>>    print(line)
linux

Python

c

Java

c++

为什么会是这样

2.4,数据文件的写入

文件的读取一共说了三个方法,有读取,那么应该有写入,怎么用Python进行写呢,一起看看吧

操作方法描述
.write(s)向文件写入一个字符串或字节流
f = open("测试.txt","w")
f.write("人生苦短,我学Pyhon")
f.close()

注意那个“w”,为什么写不进去,为什么写进去是空白的,前者与“w ”有关系,写模式,后者,记得close()

操作方法描述
.writelines(lines)将一个元素全为字符串 的列表写入文件
f = open("测试.txt","w")
s = ["中国","法国","美国"]
f.writelines(s)
>>>f.close()
中国法国美国
操作方法描述
.seek(offset)改变当前文件操作指针的位置,offset含义如下:0--文件开头;1---当前位置;2----文件结尾

一维数据的格式化和处理

数据组织的维度

从一个数据到一组数据,一个数据表达的含义到一组数据表达一个或多个含义。

  1. 维度:一组数的组织形式
  2. 一维数据:由对等关系的有序或无序数据结构,对应标列表、数组和集合等概念。
  3. 二维数据:由多个一维数据构成,是一维数据的组合形式。表格是典型的二维数据,其中表头是二维数据的一部分。
  4. 多维数据:由一维或二维数据在新维度上扩展形式。
  5. 高维数据:仅利用最基本的 二元关系展示数据间的复杂结果。键值对 说了这么多,其实我也没明白。
  6. 一维数据类似线性。 几个同学的成绩:99、89、75、65、88;["中国","法国","美国"],可以用集合、数组或者列表定义。就是一维数据。
  7. 二维数据:类似平面。可以说是用 两个点确定一个数据。 为什么会是表格呢,以成绩单为例,要找出一人的成绩,就需要他的姓名和你要找的哪一科成绩。定位。
  8. 高维数据,立体。对应应该是三点确定一个数据 数据的操作周期: 存储<->表示<->操作

一维数据的表示

一维数据现在了解了吗

  1. 是个有序数列,用列表类型。

因此列表类型可以表示一维有序序列 for循环可以对数列进行遍历,从而方便对数据进行处理。

  1. 是个无序数列,用集合类型 同上也可以for循环遍历。

一维数据的存储

  1. 空格存储 使用一个或多个空格存储,不换行。但是数据中不可以存在空格
Java liunx c python hexo
  1. 逗号分隔 使用英文半角逗号分隔数据进行存储,不换行,但是和空格一样,数据中不可以出现英文半角逗
Java,liunx,c,python,hexo
  1. 其他方式: 使用其他符号或符号组合分隔,建议采用特殊符号:但是需要根据数据特点定义,通用性较差
Java$liunx$c$python$hexo
Java&liunx&c&python&hexo

一维数据的处理

存储<->表示

  • 将存储的数据写入程序
  • 将程序表示的数据写入文件
  1. 从空格分隔的文件读入数据 定义一段文本: 在这里插入图片描述
>>>f = open("1.txt","r").read()
>>>s = f.split()
>>>print(s)
['Java', 'liunx', 'c', 'python', 'hexo']

当然举一反三,特殊符号的那个

>>>ls = txt.split("&")

以上是读,那么接下来就是写了

  1. 空格分隔方式
ls = ["python","Java","c"]
f = open("f.TXT","w")
f.write(" ".join(ls))
f.close()

在这里插入图片描述

  1. 特殊分隔方式
f.write("$ ".join(ls))

不难发现这两个方法我们都很熟悉。

二维数据的格式化和处理

二维数据的表示

前面说列表不可以用于表达二维数据,现在可以了,但是有个条件:二维列表。什么是二维列表?很简单

[[1,2,3],[4,5,6]]

列表里面还有列表。则就是一个二维的。当然二维列表也是可以遍历的,两层for即可。

list1 = [[1,2,3],[4,5,6]]
count = []
for i in list1:
    for j in i:
        print(j)

在这里插入图片描述 方法还有很多,这不是唯一的求解

CSV数据存储格式

1.什么是CSV?

  • Comma-Separated Values
  • 国际通用的一维二维数据存储格式,一般.csv是扩展名
  • 每行一个一维数据,采用逗号分隔,无空格。
  • Excel和一遍编辑软件都可以读入或另存为CSV文件

什么意思呢?国际都认,我记得在电脑里看见过这类文件。 用记事本打开应该是这样~ 在这里插入图片描述

  • 如果某个元素缺失,逗号依旧保留。

  • 二维数据的表头可以作为数据存储,也阔以另行存储。

  • 逗号为英文半角逗号,逗号与数据之间无额外空格。

这个都很好理解。

  1. 怎么存储呢 按行存?按列存?

  2. 按行存或者按列存都可以,这个有程序而定。

  3. 一般索引习惯:Is[row][column],先行后列

  4. 根基一般习惯,外层列表每个元素是一行,按行存。

二维数据的存储

  1. .从CSV格式文件中读入数据。 我们先定义一段文本 在这里插入图片描述
fo = open("fname.csv")
ls = []
for line in fo:
    line = line.replace("\n","")
    ls .append(line.split(","))
print(ls)
fo.close()

结果: 在这里插入图片描述

  1. 将数据写入CSV格式文件
s = [["1","2","3"],["4","5","6"],["7","8","9"]]
f = open("fname.csv","w")
for a in s:
   f.write(",".join(a) + "\n")
f.close()   

.在这里插入图片描述 有图有真相 3. 二维数据的逐一处理 这部分我们提前了。两个for即可

总结

这就是这一章的学习笔记,写完这篇笔记,我也就了解的差不多了,学会了, 当然学到这里还不算自动化办公的成果,与其用Python写文章,在生成Word,那我为什么不直接打开Word呢,还不用写代码。 当然可以吧表格的数据导出来求最大值,最小值。 如果看到了这里,谢谢您,如果对您有帮助,这是我的荣幸。如有有不足,欢迎指出,谢谢您