Python入门笔记(6)

Python基础语法(6)

文件的使用

文件的类型

  1. 定义:文件是数据的抽象和集合
  • 文件是存储在存储器上的数据序列
  • 文件时数据存储的一种形式
  • 文件的展现形态:文本文件和二进制文件
  1. 区分文本文件和二进制文件

文本文件和二进制文件只是文件的展示方式;本质上,所有文件都是二进制形式存储;形式上,所有文件采用两种方式展示。

  • 文本文件

由单一特定编码组成的文件,如UTF-8编码

由于存在编码,也被看成是存储着的长字符串

适用于例如:.txt文件、.py文件等

  • 二进制文件

直接由比特0和1组成,没有统一字符编码

一般存在二进制0和1的组织结构,即文件格式

适用于例如:.png文件、.avi文件等

文件的打开与关闭

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

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

  1. 文件名表示方法:

‘D:/Software/Python/f.txt’

‘D:\\Software\\Python\\f.txt’

‘./Software/Python/f.txt’

‘f.txt’(需与源文件同目录)

  1. 打开模式
文件的打开模式描述
‘r’只读模式,默认值,如果文件不存在,则返回FileNotFoundError
‘w’覆盖写模式,文件不存在则创建,存在则完全覆盖
‘a’追加写模式,文件不存在则创建,存在则在文件最后追加内容
‘x’创建写模式,文件不存在则创建,存在则返回FileExistsError
‘b’二进制文件模式
‘t’文本文件模式,默认值
‘+’与r/w/x/a一同使用,在原功能基础上增加同时读写功能
>>> 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. 关闭

<变量名>.close()

文件内容的读取

  1. 读取
操作方法描述
<f>.read(size = -1)读入全部内容,如果给出参数,读入前size长度
<f>.readline(size = -1)读入一行内容,如果给出参数,读入该行前size长度
<f>.readlines(hint = -1)读入文件所有行,以每行为元素形成列表,如果给出参数,读入前hint行
  1. 文件全文本操作
  • 遍历全文本

方法一:

fname = input('请输入要打开的文件名称:')
fo = open(fnmae, 'r')
txt = fo.read()
# 对全文txt进行处理
fo.close()

方法二:

fnmae = input('请输入要打开的文件名称:')
fo = open(fname, 'r')
txt = fo.read(2)
while txt != '':
    # 对文本txt进行处理
    txt = fo.read(2)
fo.close()
  • 逐行遍历文件

方法一:

fnmae = inpiut('请输入要打开的文件名称:')
fo = open(fnmae, 'r')
for line in fo.readlines():
    print(line)
fo.close()

方法二:

fnmae = input('请输入要打开的文件:')
fo = open(fnmae, 'r')
for line in fo:
    print(line)
fo.close()

数据文件的写入

操作方法描述
<f>.write(s)向文件写入一个字符串或字节流
<f>.writelines(lines)将一个元素全为字符串的列表写入文件
<f>.seek(offset)改变当前文件操作针位置,offset含义如下:0-文件开头;1-当前位置;2-文件结尾
>>> f.write('中国是一个伟大的国家')
>>> ls = ['中国', '美国', '英国']
>>> f.writelines(ls)
中国美国英国
>>> f.seek(0) # 回到文件开头

一维数据的格式化和处理

数据组织的维度

  1. 维度:一组数据的组织形式
  2. 一维数据:由对等关系的有序或无序数据构成,采用线性方式组织(对应列表、数组和集合等概念)
  3. 二维数据:由多个一维数据构成,是一维数据的组合形式(表格是典型的二维数据;其中,表头是二维数据的一部分)
  4. 多维数据:由一维或二维数据在新维度上扩展形成
  5. 高维数据:仅利用最基本的二元关系展示数据间的复杂结构

一维数据的表示

  1. 如果数据间有序:使用列表类型
  • 列表类型可以表达一维有序数据
  • for循环可以遍历数据,进而对每个数据进行处理
  1. 如果数据间无序:使用集合类型
  • 集合类型可以表达一维无序数据
  • for循环可以遍历数据,进而对每个数据进行处理

一维数据的存储

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

一维数据的处理

  1. 将存储的数据读入程序
  • 从空格分隔的文件中读入数据
中国 美国 英国 法国
>>> txt = open('fname.txt').read()
>>> ls = txt.split()
>>> ls
['中国','美国', '英国', '法国']
  • 从特殊符号分隔的文件中读入数据
中国$美国$英国$法国
>>> txt = open('fname.txt').read()
>>> ls = txt.split('$')
>>> ls
['中国','美国', '英国', '法国']
  1. 将程序表示的数据写入文件
  • 采用空格分隔方式将数据写入文件
ls = ['中国','美国', '英国', '法国']
f = open('fname.txt', 'w')
f.write(' '.join(ls))
f.close()
  • 采用特殊符号分隔方式将数据写入文件
ls = ['中国','美国', '英国', '法国']
f = open('fname.txt', 'w')
f.write('$'.join(ls))
f.close()

二维数据的格式化和处理

二维数据的表示

  1. 使用列表类型
  • 列表类型可以表达二维数据
  • 使用二维列表
  • 使用两层for循环遍历每个元素
  • 外层列表中每个元素可以对应一行,也可以对应一列

[[3.1, 3.14, 3.141, 3.1415], [3.14159, 3.141592, 3.1415926, 3.14159265]]

CSV数据存储格式

CSV: Comma-Separated Values

  • 国际通用的一二维数据存储格式,一般.csv扩展名
  • 每行一个一维数据,采用逗号分隔,无空行
  • Excel和一般编辑软件都可以读入或另存为csv文件
  • 如果某个元素缺失,逗号仍要保留
  • 二维数据的表头可以作为数据存储,也可以另行存储
  • 逗号为英文半角逗号,逗号与数据之间无额外空格

二维数据的存储

  • 按行存或者按列存都可以,具体由程序决定
  • 一般索引习惯:ls[row][column],先行后列
  • 根据一般习惯,外层列表每个元素是一行,按行存

二维数据的处理

  1. 从CSV格式的文件中读入数据
fo = open(fname)
ls = []
for line in fo:
    line = line.replace('\n', '')
    ls.append(line.split(','))
fo.close()
  1. 将数据写入CSV格式的文件
ls = [[], [], []]   # 二维列表
f = open(fname, 'w')
for item in ls:
    f.write(','.join(item) + '\n')
f.close()
  1. 二维数据的逐一处理

采用二层循环

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值