推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

预备小菜:Python入门之操作文件

   2023-06-26 网络整理佚名2470
核心提示:第二个参是指的文件的打开方式,比如只读,写入或者追加等,如果不添加的话,默认是只读方式打开文件。以读写方式打开文件操作二进制数据,文件不存在则报错不过以上三个示例的写法并不规范,如果在代码中打开了某个文件,没有释放掉,其他的程序是无法操作文件,所以需要在最后关闭文件,而且在文件操作时候还需要进行异常处理,所以完善的写法应该是如下。

文件读写操作是数据分析中经常遇到的场景,也是常见的I/O(Input/)场景。 我们常用的有excel文件、txt文件、csv文件。 单个 txt 或 csv 文件比单个 Excel 文件存储更多行。 不过Excel目前支持的行数是最大的,对于刚接触数据分析的人来说完全足够了。 如果有几千万甚至几亿的数据,就会用一些大数据相关的技术来处理。 这不是我们讨论的重点,所以我们先用txt文件来演示一下如何读写。

读取文件

首先我们在电脑本地创建一个test.txt文件,并在文件中写入四行内容,如图。

然后我们开始读取文件,提供了一个内置函数open(),用于打开文件,创建文件对象,然后读取文件对象。

test = open('test.txt', 'r')
print(test.read())
#代码结果:
hello
world
Python
数据分析

上面的 open() 函数中有两个参数。 第一个是文件的名称。 您可以使用相对路径或绝对路径。 如果使用相对路径,需要当前代码脚本文件和读取的文件同级目录,否则抛出异常。

: [Errno 2] 没有这样的文件或: 'test.txt'

第二个参数是指文件的打开方式,例如只读、写入或追加等,如果不添加则默认以只读方式打开文件。 国内打开文件的方式有10多种,常用的打开方式如表所示。

开放方法

影响

功能说明

r

以只读方式打开文件,如果文件不存在则报错

r+

读取、覆盖

以读写方式打开文件,如果文件不存在,会报错

RB

以只读方式打开文件读取二进制数据,如果文件不存在则报错

RB+

读取、覆盖

以读写方式打开文件,操作二进制数据,如果文件不存在,会报错

w

以只写模式打开文件,如果文件存在则覆盖,如果不存在则创建

瓦+

读取、覆盖

以读写方式打开文件,如果存在则覆盖文件,如果不存在则创建

工作组

以只写模式打开文件以写入二进制数据。 如果文件存在,则覆盖; 如果不存在,则会创建它。

WB+

读取、覆盖

以读写模式打开文件并写入二进制数据。 如果文件存在,则覆盖; 如果不存在,则会创建它。

A

附加

追加内容,新写入的内容添加到现有内容中,不覆盖,如果文件不存在,则创建该文件

一个+

阅读、追加

读写内容,新写入的内容添加到已有内容中,不覆盖,如果文件不存在,则创建该文件

ab

附加

附加二进制数据。 新写入的内容会添加到现有内容中,不会覆盖。 如果文件不存在,则会创建该文件

抗体+

阅读、追加

读取和写入二进制数据。 新写入的内容会添加到现有内容中,不会覆盖。 如果文件不存在,则会创建该文件

以上方法不能是三个操作,read r(读),write w(写),add a(),如果带b则表示操作的是二进制数据,原始数据以二进制表示文件保存在硬盘上。 上面的例子使用二进制读取如下:

test = open("test.txt", 'rb')
print(test.read())
#代码结果:
b'hello\nworld\nPython\n\xe6\x95\xb0\xe6\x8d\xae\xe5\x88\x86\xe6\x9e\x90'

为什么使用二进制数据? 由于图片或视频文件无法以字符串格式显示,只能以二进制格式读写,并且二进制数据可以跨平台使用。

写入文件

在上一节中,我们看到了12种打开文件进行读写操作的方式,并且读写所需的模式是不同的。 如果以只读模式打开,写入操作的结果会怎样?

test = open("test.txt", 'r')
word = '一个新字符串'
test.write(word)

运行结果,无意外,有错误

io:不

所以需要按照指定的方法打开文件:

test = open("test.txt", 'w')
word = '一个新字符串'
test.write(word)

这是同目录下的test.txt文件,发现只有一行文字,就是我们新写的字符串。 同样,如果通过写入方式打开文件,操作文件时也会报io异常:not。

注:文件写入操作默认编码为系统编码,最常用的中文系统默认编码格式为GBK。 如果采用追加的方式,如果原文件内容的字符编码不统一,就会产生乱码。 所以在写操作的时候,最好在open()的时候指定字符编码,避免出现乱码。

最后我们再看一下方法,继续使用上面的test.txt文件,继续写:

test = open("test.txt", 'a')
word = '又一个新字符串'
test.write(word)

这时候我们来检查一下text.txt文件。 文件的内容是:“一个新字符串和一个新字符串”。 可见“a”方法实现的是额外写入而不是覆盖。

但上述三个例子的写法并不规范。 如果代码中打开了一个文件,没有释放,其他程序就无法操作该文件,所以最后需要关闭该文件,并且文件操作时需要进行异常处理。 ,所以完美的写法应该是这样的。

文件操作的完整写法:

try:  
    test = open("test.txt", 'r', encoding="UTF8")  
    word = '又一个新字符串'  
    test.write(word)  
except Exception as e:  
    print("操作文件异常:{}".format(e))  
finally:
test.close()

如果每次操作文件的时候都需要写try来捕获异常,那么还需要释放资源。 这段代码非常冗余,所以with用法中还提供了一个方法,会自动获取和释放资源,用法也比较简单易懂。

文件操作的完整写法:

with open("test.txt", 'a', encoding="UTF8") as test:
word = '又一个新字符串'
test.write(word)

with语句的本质是上下文管理,多用于文件操作、数据库连接操作等应用场景。

概括

大多数情况下都是操作excel文件,操作excel文件的专用库有很多,比如等等,这些内容后面会讲到。

对于数据分析的入门,这些基础知识基本上就够了。 当然它不仅可以做数据分析,还可以开发web,还支持面向对象编程。 语言的深度远不止于此。 找一些学习资料。 毕竟网络上最缺的就是老师。

准备小菜的章节到此结束,稍后我们将开始制作“大餐”。

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON