Python新手入门(四):文件&数据格式化

北理mooc学习笔记

文件的使用

  • 文件时数据的抽象和集合
  • 文件展现形态:文本文件和二进制文件
文本文件二进制文件
由单一特定编码组成的文件,如UTF-8编码
由于存在编码也被看成是存储着的长字符串
直接由比特0和1组成,没有统一字符编码

文件的打开

在这里插入图片描述
在这里插入图片描述

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

文件内容的读取

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

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

# 按数量读入,逐步处理
fame = input("请输入要打开的文件名称:")
fo = open(fname,"r") 
txt = fo.read(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()

数据的文件写入

操作方法描述
< f >.write(s)写入一个字符串或字节流
< f >.writrlines(lines)将一个元素全为字符串的列表写入文件
ls = [“北京”,“澳门”]
f.writelines(ls)
北京澳门
< f >.seek(offset)改变当前文件操作指针的位置,offset含义如下:
0 -文件开头;1 -当前位置;2 -文件结尾
f.seek(0) # 回到文件开头
fo = open("a.txt","w+")
ls = ["北京","上海","广州"]
fo.writelines(ls)
# fo.seek(0)
for line in fo:
    print(line)
fo.close
# 输出无信息 使用seek()函数,调整指针位置

数据格式化

一维数据格式化

  • 对等关系的有序或无序数据构成,采用线性方式组织
  • 列表、数组、集合
# 北京 上海 广州

# 从空格分隔的文件中读入数据
txt = open(fname).read()
   # 从特殊符号分隔的文件中读入数据
   # ls = txt.split("$")
ls = txt.split()
f.close()
>>>ls
ans-> ['北京','上海','广州']

# 采用空格分割的方式将数据写入文件
ls = ['北京','上海','广州']
f = open(fname,'w')
f.write(' '.join(ls))
f.close()
>>>ls
ans->['北京' '上海' '广州']

二维数据格式化

  • 区别
一维数据二维数据
列表和集合类型
[3,4,5]  数据间有序
{3,5,4}  数据间有序
二维数据:列表类型(表格)
[ [3,4,5],
 [5,4,3] ]

CSV数据存储格式

Comma-Separated Values

  • 国际通用一二维数据存储格式,一般.csv扩展名
  • 每行一个一维数据,采用逗号分隔,无空行
  • Excel和一般编辑软件都可以读入或另存为csv文件
  • 是数据之间转换的通用格式
  • 如果某个元素缺失,逗号仍要保留
  • 二维数据的表头可以作为数据存储,也可以另行存储
  • 读入数据
# 从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 s:
    f.write(','.join(item)+'\n')
f.close()
# 元素遍历
ls = [[1,2],[3,4],[5,6]]
for  row in ls:
    for column in row:
         print(colum)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值