Python程序开发——第八章 文件

简介: Python程序开发——第八章 文件

一、文件的打开和关闭


(一)打开


通过内置函数open()来打开一个文件,并返回文件对象,若无法被打开,则会抛出OSError。

open()函数的格式如下:

open(文件名称,mode="",encoding="")

参数encoding设置文件的编码格式,参数mode设置文件的打开模式,默认的文件访问模式为只读(r),比如下表文件打开模式:

模式 名称 含义
r 只读 以只读的形式打开,若文件不存在或无法找到,则open()函数调用失败
w 只写 以只写的形式打开,若文件已存在,则重写文件,否则创建文件
a 追加 以只写的形式打开,只允许在该文件末尾追加数据,若文件不存在,则创建文件


默认的模式为文本模式(不加后缀时),若要以二进制模式打开文件,则可在r、w、a后面加上 b ,即rb、wb、ab。


可以在后面加上“+”,表示以可读或可写的方式打开该文件,比如rb+,它表示在二进制模式下,以可读或可写的方式打开该文件。


(二)关闭


程序执行完毕后,系统会自动关闭由该程序打开的文件,由于打开的文件数量有限以及打开过多会占用系统资源,所以当文件使用完毕后主动关闭文件以释放内存,tg1使用内置的close()方法关闭文件,该方法没有参数。

调用格式如下:

文件名称.close()


二、读取数据


(一)read()方法


通过read()方法从文件中读取指定数据,该方法内size参数用于设置读取数据的字节数,缺省情况下,读取文件所有的数据。

创建了一个file1.text文件,在pythonProject项目下,其文本内容为“HELLO WORLD!”:

1667112008972.jpg

另在项目中创建一个名称为test.py的python文件,下列为python代码,打开并通过read()方法有参/无参读取数据:

# 读取文件file1.txt中5个字节以及全部数据
get_data = open("file1.txt", mode="r", encoding="utf-8")
print(get_data.read(5))
get_data.close()
get_data = open("file1.txt", mode="r", encoding="utf-8")
print(get_data.read())
get_data.close()

运行结果如下:

1667112020899.jpg


(二)readline()方法


readline()方法用于从文件中读取一行数据。

file2.txt文件:

这里,也是谷歌量子 AI 实验室 (Quantum AI Campus) 的新家。
在这里,一群来自全世界最优秀的工程师、量子力学研究者、艺术家和自然科学家正在共同协作。


python文件:

# 读取文件file2.txt中一行数据
get_data = open("file2.txt", mode="r", encoding="utf-8")
print(get_data.readline())
get_data.close()

运行结果如下:

1667112086225.jpg


(三)readlines()方法


readlines()方法用于一次读取文件的所有内容,该方法会返回一个列表,文件中的每一行对应列表中的一个元素。

file2.txt文件:

这里,也是谷歌量子 AI 实验室 (Quantum AI Campus) 的新家。
在这里,一群来自全世界最优秀的工程师、量子力学研究者、艺术家和自然科学家正在共同协作。

python文件:

# 读取文件file2.txt的所有内容
get_data = open("file2.txt", mode="r", encoding="utf-8")
print(get_data.readlines())
get_data.close()

运行结果如下:

1667112132721.jpg


三、写入数据


(一)write()方法


通过write()方法用于向文件中写入数据,若写入数据成功,则该方法会返回写入该文件的数据长度。

file1.txt文件:

HELLO WORLD!


python文件:

get_data = open("file1.txt", mode="w+", encoding="utf-8")
print(get_data.write("hello python!"))
get_data.close()

运行结果如下,可看出本次写入file1.txt文件的数据长度为13:

1667112233319.jpg


(二)writelines()方法


writelines()方法用于向文件中写入字符串序列,可以是一个字符串列表。

file1.txt文件:

hello world!


python文件:

get_data = open("file1.txt", mode="w+", encoding="utf-8")
get_data.writelines(["python", "hello"])
get_data.close()

file1.txt文件内容如下:

1667112195586.jpg


四、定位读取


Python有用于获取文件读/写位置的tell()方法和修改文件读/写位置的seek()方法。


(一)获取文件读/写位置


通过tell()方法获取文件的读/写位置。

file1.txt文件:

HELLO WORLD!


python文件,首先使用read()方法读取文件中的两个字节,然后通过tell()方法输出文件读取的位置:

get_data = open("file1.txt", mode="r", encoding="utf-8")
print(get_data.read(2))
print(get_data.tell())
get_data.close()

运行结果如下:

1667112284654.jpg


(二)设置文件读/写位置


通过seek()方法设置文件的读/写位置,通过移动文件读取指针到文件的指定位置,它有两个参数分别为:第一个参数为offset偏移量,表示读/写位置需移动的字节数;第二个参数为from指定文件的读/写位置,它的取值有0、1和2,分别表示在开始位置读/写、在当前位置读/写和在末尾位置读/写,默认情况下from值为0(即从文件开始位置读/写)。

file1.txt文件:

abcdefgh


python文件:

get_data = open("file1.txt", mode="r", encoding="utf-8")
get_data.seek(0)
print(get_data.read())
get_data.seek(3)
print(get_data.read())
get_data.seek(0, 0)
print(get_data.read())
get_data.seek(5, 0)
print(get_data.read())
get_data.close()

运行结果如下:

1667112317720.jpg


五、目录


(一)创建目录


通过os模块中的mkdir()函数创建目录,函数内参数为目录的名称,另外还有参数mode表示目录的数字权限。

python代码:

import os
os.mkdir("package2")

创建成功,在项目栏中看到package0目录:

1667112350757.jpg

也可以在PyCharm中直接通过项目创建目录,右键项目,找到新建——目录如下:

1667112363902.jpg

输入目录名称,即可创建目录:

1667112376546.jpg

创建完成后可以在项目栏看到所创建的目录package2:

1667112388009.jpg


(二)删除目录


通过shutil模块中的rmtree()函数可删除目录。

例如输入一个目录,首先通过os模块中的exists()函数判断该目录是否存在,若存在则删除该目录,否则创建一个新目录,python代码如下:

import os
import shutil
content = input("请输入要查找的目录:")
i = os.path.exists("content")
if i is True:
    shutil.rmtree("content")
    print("该目录已存在!已自动删除!")
else:
    print("该目录不存在!")
    Y_N = input("是否创建新目录?")
    if Y_N == "Y" or Y_N == "y":
        os.mkdir(content)
        print(f"{content}目录已创建成功!")

运行结果如下:

1667112419789.jpg

项目栏中:

1667112426521.jpg


(三)获取目录下的文件列表


可以通过os模块中的listdir()函数获取目录下的文件列表。

python代码:

import os
print(os.listdir("package1"))

运行结果如下:

1667112461017.jpg


六、文件路径


(一)相对路径和绝对路径


文件路径分为相对路径和绝对路径,相对路径是指一个文件或文件夹所在路径与其它文件或文件夹的路径关系,而绝对路径是指从盘符(即磁盘区)到当前位置的路径。


(二)os模块中的关于路径的函数


以下是几个os模块中常用的关于路径的函数:

1、通过os模块中的isabs()函数判断文件或文件夹的路径是否为绝对路径,若为绝对路径则返回True,否则返回False。

python代码:

import os
print(os.path.isabs("file1.txt"))
print(os.path.isabs("file2.txt"))

运行结果如下,可见两个文件的路径都是相对路径:

1667112497757.jpg

2、通过os模块中的abspath()函数规范化文件或文件夹路径,即使用该函数将文件或文件夹的路径规范化成绝对路径。

python代码,首先通过isabs()函数判断其路径为相对路径,然后通过abspath()函数将该路径转换为绝对路径:

import os
print(os.path.isabs("file1.txt"))
print(os.path.abspath("file1.txt"))

运行结果如下:

1667112516673.jpg

3、通过os模块中的getcwd()函数获取当前路径。

python代码:

#test.py文件
import os
print(os.getcwd())


运行结果如下,输出test.py文件的当前路径:

1667112533007.jpg

4、通过os模块中的exists()函数判断路径是否有效存在,若存在则返回True,否则返回False。

5、通过os模块中join()函数拼接路径,函数内的参数即要拼接的路径,若其中要拼接的最后一个路径为空,则拼接生成的路径会以"\"结尾。


相关文章
|
11天前
|
机器学习/深度学习 存储 算法
解锁文件共享软件背后基于 Python 的二叉搜索树算法密码
文件共享软件在数字化时代扮演着连接全球用户、促进知识与数据交流的重要角色。二叉搜索树作为一种高效的数据结构,通过有序存储和快速检索文件,极大提升了文件共享平台的性能。它依据文件名或时间戳等关键属性排序,支持高效插入、删除和查找操作,显著优化用户体验。本文还展示了用Python实现的简单二叉搜索树代码,帮助理解其工作原理,并展望了该算法在分布式计算和机器学习领域的未来应用前景。
|
21天前
|
监控 网络安全 开发者
Python中的Paramiko与FTP文件夹及文件检测技巧
通过使用 Paramiko 和 FTP 库,开发者可以方便地检测远程服务器上的文件和文件夹是否存在。Paramiko 提供了通过 SSH 协议进行远程文件管理的能力,而 `ftplib` 则提供了通过 FTP 协议进行文件传输和管理的功能。通过理解和应用这些工具,您可以更加高效地管理和监控远程服务器上的文件系统。
51 20
|
27天前
|
存储 数据采集 数据处理
如何在Python中高效地读写大型文件?
大家好,我是V哥。上一篇介绍了Python文件读写操作,今天聊聊如何高效处理大型文件。主要方法包括:逐行读取、分块读取、内存映射(mmap)、pandas分块处理CSV、numpy处理二进制文件、itertools迭代处理及linecache逐行读取。这些方法能有效节省内存,提升效率。关注威哥爱编程,学习更多Python技巧。
|
28天前
|
存储 JSON 对象存储
如何使用 Python 进行文件读写操作?
大家好,我是V哥。本文介绍Python中文件读写操作的方法,包括文件读取、写入、追加、二进制模式、JSON、CSV和Pandas模块的使用,以及对象序列化与反序列化。通过这些方法,你可以根据不同的文件类型和需求,灵活选择合适的方式进行操作。希望对正在学习Python的小伙伴们有所帮助。欢迎关注威哥爱编程,全栈路上我们并肩前行。
|
1月前
|
存储 算法 Serverless
剖析文件共享工具背后的Python哈希表算法奥秘
在数字化时代,文件共享工具不可或缺。哈希表算法通过将文件名或哈希值映射到存储位置,实现快速检索与高效管理。Python中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
2月前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
76 7
|
4月前
|
自然语言处理 数据处理 Python
python操作和解析ppt文件 | python小知识
本文将带你从零开始,了解PPT解析的工具、工作原理以及常用的基本操作,并提供具体的代码示例和必要的说明【10月更文挑战第4天】
678 60
|
4月前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
146 3
python知识点100篇系列(15)-加密python源代码为pyd文件
|
4月前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
185 1
Python实用记录(十三):python脚本打包exe文件并运行
|
3月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
178 2

热门文章

最新文章

推荐镜像

更多