Python_文件和数据格式化

目录

1 文件的使用

文本文件

二进制文件

1.1 文件的打开关闭

1.1.1 文件的打开

1.1.2 文件的关闭

1.2 文件内容的读取

1.3 文件的全文本操作

1.4 数据的文件写入

2 一维数据的格式化处理

2.1 数据组织的维度

2.2 一维数据的表示

2.3 一维数据的存储

2.4 一维数据的处理

         一维数据的读取处理:

一维数据的写入处理:

3 二维数据的格式化处理

3.1 二维数据的表示

3.2 CSV格式与二维数据的存储

3.3 二维数据的处理

二维数据的读入处理


1 文件的使用

        文件是数据的抽象和集合。

  • 文件是存储在辅助存储器上的数据序列;
  • 文件时数据存储的一种形式;
  • 文件展现形态:文本文件和二进制文件。
    • 文本文件和二进制文件只是文件的展示方式。在本质上所有的文件都采用二进制形式进行存储,在形式上所有的文件都采用两种方式展示。

文本文件

        文本文件是由单一特定编码组成的文件,如UTF-8编码。由于存在编码,所以文本文件也被看成是存储着的长字符串。适用于例如.txt文件和.py文件等。

二进制文件

        二进制文件直接由比特0和1组成,没有统一字符编码。一般存在二进制-和1的组织结构,即文件格式。使用如例如.png文件和.avi文件等。

1.1 文件的打开关闭

文件处理的步骤:打开-操作-关闭。

 - 对一个文件,如果不对它进行处理,它体现的是一种文件的存储状态,此时文件存储于计算机的硬盘中;

 - 如果有程序想处理一个文件,首先要使该文件变为占用状态。在文件的占用状态中,一个程序可以唯一地、排他地对文件进行相关的处理。

 - 文件的存储状态与文件的占用状态,通过文件的打开和关闭进行转换。

        在打开文件之后,我们可以对文件进行数据读入和数据输出,简称为读文件和写文件。

Python中提供的常用读文件函数与写文件函数:

  • a.read(size)
  • a.readline(size)
  • a.readlines(hint)
  • a.write(s)
  • a.writelines(lines)
  • a.seek(offset)

1.1.1 文件的打开

<变量名> = open(<文件名>, <打开模式>)
  • 其中文件名包括文件路径与名称,如果与源文件路径相同即可省去 ;
  • 打开模式包括以文本形式打开和以二进制形式打开,打开的过程是都信息或可写信息;
  • 文件打开之后,使用一个抽象的变量“文件句柄”表示。

文件的打开模式:

  • 与读写相关的模式:

  •  与打开方式相关的模式:

例:

f = open("f.txt")  //文本形式、只读(默认值)

f = open("f.txt", "rt")  //文本形式、只读(同默认模式)

f = open("f.txt", "w")  //文本形式、覆盖写模式

f = open("f.txt", "a+")  //文本形式、追加写模式 + 读文件

f = open("f.txt", "x")  //文本形式、创建写模式

f = open("f.txt", "b")  //二进制形式、只读模式

f = open("f.txt", "wb")  //二进制形式、覆盖写模式

1.1.2 文件的关闭

<变量名>.close()

        如果在代码段中忘记了关闭文件,在程序退出时文件也会自动关闭。

1.2 文件内容的读取

文件内容为:中国是一个伟大的国家!

1.3 文件的全文本操作

遍历全文本:

  • (一次读入,统一处理。但在文本文件体量非常大的时候,会耗费非常多的时间和资源。):
fname = input("请输入要打开的文件名称")
fo = open(fname, "r")
txt = fo.read()  //fo.read()即对全文txt进行处理
fo.close()
  •  按数量读入逐步处理:
fname = input("请输入要打开的文件名称")
fo = open(fname, "r")
txt = fo.read(2)  //参数赋为2,指从文件中读入两个字节
while txt != "":
    //对txt进行处理
    txt = fo.read(2)
fo.close()

逐行遍历文件:

  • 一次性读入:
fname = input("请输入要打开的文本名称")
fo = open(fname, "r")
for line in fo.readlines():
    print(line)
fo,close()
  •  分行读入,逐行处理:
fname = input("请输入要打开的文件名")
fo = open(fname, "r")
for line in fo:
    print(line)
fo.close()

1.4 数据的文件写入

2 一维数据的格式化处理

2.1 数据组织的维度

一维数据:由对等关系的有序或无序数据构成,采用线性方式组织。对应列表、数组、集合等概念。

二维数据:由多个一维数据构成,是一维数据的组合形式。例如表格。

多维数据:由一维或二维数据在新维度上扩展形成。

高维数据:进利用最基本的二元关系展示数据间的复杂结构。例如字典中的键值对。

数据的操作周期:存储、表示、操作;

2.2 一维数据的表示

如果数据间有序,使用列表类型

        - 列表类型可以表达一维有序数据。

        - for循环可以遍历数据,进而对每个数据进行处理。

如果数据间无序,使用集合类型

        - 列表类型可以表达一维无序数据。

        - for循环可以遍历数据,进而对每个数据进行处理。

2.3 一维数据的存储

  • 空格分隔:
    • 使用一个或多个空格分隔进行存储,不换行;
    • 缺点:数据中不能存在空格。
  • 逗号分隔:
    • 使用英文半角逗号分隔数据进行存储,不换行;
    • 缺点:数据中不能存在英文逗号。
  • 其他方式:
    • 采用其他符号或符号组合分隔,建议采用特殊符号;
    • 缺点:需要根据数据特点定义,通用性较差。

2.4 一维数据的处理

        对一维数据的存储格式和表示方式之间的一种转换。

         一维数据的读取处理:

  •  从空格分隔的文件中读入数据:
    txt = open(fname).read()
    ls = txt.split()  //从空格分隔的文件中读入一维数据
    f.close
  • 从特殊符号分隔的文件中读入数据:
    txt = open(fname).read()
    ls = txt.split("$")
    f.close()

    一维数据的写入处理:

  • 采用空格和特殊分隔方式将数据写入文件:
    ls = ['中国', '美国', '日本']
    f = open(fname, "w")
    f.write(' '.join(ls))  //join方法将join前面的字符串分割放置到后边的join参数中的各个元素之间
    //同理,如果是采用特殊分隔方式,则将join前面的字符串替换为特殊字符
    f.close()

3 二维数据的格式化处理

3.1 二维数据的表示

使用列表类型中的二维列表

        - 使用两层for循环遍历每个元素;

        - 外层列表中每个元素可以对应一行或一列。

3.2 CSV格式与二维数据的存储

 CSV :Comma-Seperated Values

        - 国际通用的一二维数据存储格式,扩展名一般为.csv;

        - 每行一个一维数据,采用逗号分隔,无空行;

        - Excel和一般编辑软件都可以读入或另存为csv文件。

        

        - 如果某个元素缺失,逗号仍要保留;

        - 二维数据的表头可以作为数据存储,也可以另行存储;

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

        

        - 按行存或按列存都可以,具体由程序决定;

        - 一般索引习惯:ls[row][column],先行后列;

        - 根据一般习惯,外层列表每个元素十一行,按行存。

3.3 二维数据的处理

二维数据的读入处理:

从CSV格式的文件中读入数据并写入二维列表:

fo = open(fname)
ls = []
for line in fo:
    line = line.replace("\n", "")
    ls.append(line.split(","))
fo.close()

将数据写入CSV格式的文件:

ls = [[], [], []]
f = open(fname, 'w')
for item in ls:
    //将每个写入元素的后面都添加逗号,在最后添加换行符
    f.write(','.join(item) + '\n')
f.close()

遍历二维列表:

ls = [[1,2], [3,4], [5,6]]
for row in ls:
    for column in row:
        print(column)
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值