Python基础--文件和文件中的数据处理

一、文件的基本概念

操作系统对数据进行管理是以文件为单位的,当访问磁盘等外存上的数据时,必须先按文件名找到指定的文件,然后再从该文件中读取数据;如果要向外部介质上存储数据,也必须建立一个文件,才能向其输出数据。

1.文件

文件是存储在辅助存储器上的一组数据序列,可以包含任何数据内容。

2.目录

目录一般采用树状结构,在这种结构中,每个磁盘有一个根目录,它包含若干文件和子目录。
在这里插入图片描述
注意:
当在Python中处理文件路径时,你可以使用正斜杠“/”或双反斜杠“\”来表示路径分隔符,或者使用原始字符串来避免转义问题。

在Python语言中,字符串是用于表示文本数据的序列。路径字符串通常用于指定文件系统中文件或目录的位置。
使用“/”作为路径分隔符:在大多数操作系统(如Unix、Linux和macOS)中,“/”被用作路径分隔符。例如,路径/home/user/docs表示在user目录下的docs目录。
使用“\”作为路径分隔符:在Windows操作系统中,“\”被用作路径分隔符。
例如,路径C:\Users\User\Documents表示在C盘的Users\User\Documents目录。
转义“\”:在Python中,反斜杠“\”是一个特殊字符,用于表示转义序列,如换行符\n或制表符\t。
当你在字符串中使用单个反斜杠时,Python会将其视为转义字符的开始,因此需要使用两个反斜杠“\”来表示文件路径中的单个反斜杠。
例如,Windows路径C:\Users\User\Documents在Python字符串中应该写作C:\\Users\\User\\Documents。
使用原始字符串:为了避免手动转义每个反斜杠,Python提供了原始字符串字面量,通过在字符串前加上r或R来创建。
原始字符串不会处理反斜杠作为转义字符,因此可以直接写入路径。
例如,r"C:\Users\User\Documents"是一个原始字符串,表示Windows路径,不需要额外的转义。

二、文件的编码

  • ANSI编码:
    ANSI是由美国国家标准学指定的编码,通常用于Windows操作系统中。不同的ANSI编码互不兼容(ANSI编码的特点在于它支持多语言环境。对于0x80到0xFF的扩展范围,不同的国家和地区可以定义自己的字符集,这使得ANSI编码可以适应多种语言。例如,Windows系统中的简体中文环境可能会使用GB2312或GBK编码,而繁体中文环境可能会使用Big5编码。这些编码在0x80到0xFF的范围内定义了额外的字符,以支持中文字符的显示)对于同一种ANSI编码0x00~0x7F之间的字符,仍然是1字节代表1个字符,即ANSI的西文字符就是ASCII编码。

  • Unicode编码
    Unicode码是继ANSI编码之后推出的一种国际标准字符编码方法,是一个全球统一的字符编码标准,可以支持世界上几乎所有的书写系统。Unicode编码通常以UTF-8、UTF-16或UTF-32的形式实现,并且能够兼容ASCII编码。无半角和全角之分,全部统一计为1个字符。

  • UTF-8编码
    UTF-8就是以8位为单元对Unicode字符集进行编码,即每次传输8位数据。

  • Unicode big endia 编码
    记事本中的Unicode是litle endian编码。Unicode big endian编码和little endian编码区别在于处理多字节说的方式不同。
    在Python3.x版本中,文件默认编码格式是UTF-8,字符串使用的是Unicode编码言的文件编码

三、文件的类型

(一)文本文件

文本文件一般由单一特定编码的字符组成,如 UTF-8,内容容易统一展示和阅读。大部分
的文本文件都可以通过文本编辑软件或文字处理软件创建、修改和阅读。由于文本文件存在
编码,所以,它也可以被看作是存储在磁盘上的长字符串,如一个 txt 格式的文本文件。

(二)二进制文件

二进制文件直接由比特 0 和 1 组成,没有统一的字符编码,文件内部数据格式与文件用途
有关。
二进制是信息按照非字符但有特定格式形成的文件。二进制文件由于没有统一的字符编码,
只能当作字节流,而不能看作是字符串。

四、文件的操作

Python 对文本文件和二进制文件采用统一的操作步骤:打开→操作→关闭

(一)打开

Python 通过 open() 函数打开一个文件,并返回操作该文件的变量,基本语法如下:

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

打开模式:
在这里插入图片描述

(二)读方法

(1)f.read()
从文件中读入整个文件内容
(2)f.readline()
从文件中读入一行内容
(3)f.readlines()
从文件中读入所有行,以每行为元素形成一个列表

(三)写方法

(1)f.write()
向文件写入一个字符串或字节流
(2)f.writelines()
将一个元素为字符串的列表整体写入文件
(3)f.seek(偏移量, whence=相对位置)
改变当前文件操作指针的位置。whence 的值为:0 为文件开头,1 为当前位置,2 为文件结尾。偏移量正数向文章尾偏移,负数向文章头偏移。
f.seek(0):表示将光标定位到文件起始位置
f.seek(1):表示光标定位当当前位置
f.seek(2):表示将光光标定位到文件尾部

(四)关闭

文件使用结束后,要使用 close()方法关闭,释放文件的授权。基本格式为:

<变量名>.close()

五、数据组织的维度

(一)一维数据

1.一维数据的概念
一维数据由对等关系的有序或无序数据构成,采用线性方式组织,对应于数学中数组的概念。

2.一维数据的存储
采用空格、逗号、换行符或其他符号分隔数据,其中以逗号分隔的存储格式叫作 CSV 格式。

列表对象输出为 CSV 格式文件方法如下,一般采用字符串的 join() 方法最为方便。

3.一维数据的处理:
对一维数据进行处理首先需要从 CSV 格式文件读入一维数据,并将其
表示为列表对象。读入 CSV 文件的内容,需要使用 strip()方法和 split()方法

ls=["泰山","恒山","华山","衡山","嵩山"]
f=open("D:\\杂事\\Mount.csv","w")
#将列表 ls 中的元素以逗号(,)作为分隔符连接成一个字符串,并将这个字符串写入到文件对象 f 所指向的文件中。
f.write(",".join(ls))
f.close()

# -这是一个上下文管理器,它用于打开文件。使用 with 语句的好处是,无论文件操作过程中是否发生异常,文件都会在代码块执行完毕后自动关闭。
with open('D:\\杂事\\Mount.csv', 'r') as file:
    for line in file:
        print(line.strip())  # 打印每一行的内容

运行结果:
在这里插入图片描述
Mount.csv文件内容如下图
在这里插入图片描述

(二)二维数据

1.二维数据的概念:二维数据由多个一维数据构成,可以看作是一维数据的组合形式。

2.**二维数据的存储:**二维数据由一维数据组成,用 CSV 格式文件存储。CSV 文件的每一行是一维数据,整个 CSV 文件是一个二维数据。
二维列表对象输出为 CSV 格式文件方法如下(采用遍历循环和 join()方法相结合)
3.二维数据的处理:对二维数据进行处理首先需要从 CSV 格式文件读入二维数据,并将其表示为二维列表对象。

ls = [["东岳", "泰山"], ["北岳", "恒山"], ["西岳", "华山"], ["南岳", "衡山"], ["中岳", "嵩山"]]

# 使用with语句以写入模式打开文件
with open("D:\\杂事\\Mount.csv", "w",) as f:
    for row in ls:
        print(row)  # 打印每一行,用于调试
        f.write(",".join(row) + "\n")  # 写入文件
print()
# 再次以读取模式打开文件
with open("D:\\杂事\\Mount.csv", "r", ) as f:
    lis = [line.strip("\n").split(",") for line in f]  # 读取所有行并分割

# 打印读取的内容
for item in lis:
    print(item)
# 不需要显式调用close(),因为with语句会自动关闭文件

运行结果
在这里插入图片描述

(三)高维数据

高维数据的概念:高维数据由键值对类型的数据构成,采用对象方式组织,可以多层嵌套。
高维数据是当今 Internet 组织内容的主要形式,高维数据衍生出 HTML、XML、JSON 等具体数据组织的语法结构。
高维数据相比一维和二维数据能表达更加灵活和复杂的数据关系。

  • 40
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值