python_读写文件_os模块的简单应用2

简介: 几日不见,很是生疏啊啊啊啊,温故而知新!阅读对象:知悉python的基本语法。

3.3 查找文件大小和文件夹内容

如果上面的知识你已经掌握了,那么意味着你已经可以通过处理路径来获取特定文件和特定文件信息了。这里有一些办法供你使用。

3.3.1 利用os.path.getsize(path)获取参数path中文件的字节数

这里需要注意一下,os.path.getsize()返回的是path的大小,path如果是一个文件,那么就是文件大小;如果是文件夹,那么就是文件夹大小,文件夹大小是指文件夹这个数据结构在文件系统中占用的大小,NTFS文件系统中一个簇通常是4096字节,一个文件夹占用一个簇,所以NTFS中任何一个文件夹的大小都是4096字节。

import os
os.path.getsize('c:\\visual\\visual storage')


715be7327f4e4416a4336f5fb7eee9c7.png


上面我们知道,os.path.getsize()获取的是path中文件的大小,而不会获取该目录下所有文件的字节数。这里我们来想想怎么获取一个目录下的所有文件。

import os
totalSize = 0
for filename in os.listdir('d:\\Lenovo tools'):  # 哎呀,忘记加:冒号了
    totalSize += os.path.getsize(filename)
print(totalSize)


6587220c1d9a4c91a6ae139ccfffa1ba.png


3.3.2 调用os.listdir(path)返回path下的文件名字符串的列表

1. import os
2. os.listdir('D:\\Lenovo tools')



3.4 检查路径有效性

如果你提供的路径不存在,那么许多python程序将会运行崩溃。os.path模块提供了一些检查路径的是否存在的方法。

3.4.1 调用os.path.exists(path)判断参数path所指的文件或文件夹是否存在

如果文件存在那么返回True,文件不存在那么返回False。

import os
os.path.exists('d:\\Lenovo tools')
os.path.exists('d:\\Lenovo')


50f0a63da5034357af1cfd4c57e9d374.png


3.4.2 调用os.path.isfile(path)判断参数path是否存在且是否是文件

如果参数存在且是文件(不是文件夹),那么返回True,否则返回False

import os
os.path.isfile('d:\\Lenovo tools\\应用在后台运行禁用启用工具.exe')  # 该文件存在
os.path.isfile('d:\\Lenovo')  # 该文件不存在
os.path.isfile('d:\\Lenovo tools\\hello')  # 该文件夹存在但是它不是文件



3.4.3 调用os.path.isdir(path)判断参数path1是否存在且是否是文件夹

如果参数存在且是文件夹(不是文件),那么返回True,否则返回False。

import os
os.path.isdir('d:\\Lenovo tools\\应用在后台运行禁用启用工具.exe')  # 该文件存在
os.path.isdir('d:\\Lenovo')  # 该文件不存在
os.path.isdir('d:\\Lenovo tools\\hello')  # 该文件夹存在但是它不是文件



4. 文件读写过程

在这里我们只讨论py文件和txt文件

读写文件三步骤:

1. 调用open()函数,返回file对象。

2. 调用file对象的read()和write()方法。

3. 调用file对象的close()方法,关闭该文件。

4.1 用open()函数打开文件

要用open()函数打开一个文件,需要向里面传入参数,这个参数内容是该文件的路径(绝对路径或者相对路径皆可)。

譬如:打开e盘中的hello文件夹中hello.txt文件。

hello = open('e:\\hello\\hello.txt')

open()会返回一个关于这个文件的file对象,这里我们用变量hello接收。

4.2 读取文件内容

我们有了file对象(这里给了变量hello),就可通过file对象的一些方法对我们指定的文件进行一些处理。

hello.txt文件内容:



4.2.1 调用file对象的read()和readline()方法读取文件内容

file对象的read()方法可以将指定文件的整个内容读取为一段字符串值。

readlines()会从文件中获取一个字符串的列表,列表中的每一个字符串即为文本中的每一行。

read()方法,譬如:读取hello.txt文件的所有内容(输出以str输出)

hello = open('C:\\hello\\hello.txt')
hello.read()
hello.close()  # 如果已经处理好了文件,那么不要忘了关闭文件



readlines(),譬如:读取hello.txt文件的所有内容

hello = open('e:\\hello\\hello.txt')
hello.readlines()
hello.close()  # 如果已经处理好了文件,那么不要忘了关闭文件



每个字符串值都以一个换行字符\n 结束。除了文件的最后一行。与上文read()方法得到的单个大字符串相比,字符串的列表通常更容易处理。

4.3 读写文件

4.3.1 以写入模式打开文件

python允许你读写文件内容,但是要读写文件,那么打开文件就不应该以只读模式打开。这里需要注意,在前面中,open()中我们写入的第一个参数是文件路径,其实还有第二个参数。但是如果你没有写入第二个参数,那么python默认你输入的’r‘,(以只读模式打开);如果你想要写入文件内容,那么你应该输入第二个参数。这里有一些第二个参数的一些基本信息:


--------------------------------------------------------------------------------------------------------------------------


r : 读取文件,若文件不存在则会报错


w: 写入文件,若文件不存在则会先创建再写入,会覆盖原文件


a : 写入文件,若文件不存在则会先创建再写入,但不会覆盖原文件,而是追加在文件末尾


rb,wb:分别于r,w类似,但是用于读写二进制文件


r+ : 可读、可写,文件不存在也会报错,写操作时会覆盖


w+ : 可读,可写,文件不存在先创建,会覆盖


a+ :可读、可写,文件不存在先创建,不会覆盖,追加在末尾


注意:这里的覆盖是指每次重新打开文件进行操作时覆盖原来的,如果是在打开文件中则不会覆盖

hello = open('e:\\hello\\hello.txt', 'w')

以写入模式打开文件hello.txt

4.3.2 以write()写入文件

以w模式写入:

hello = open('e:\\hello\\hello.txt', 'w')
hello.write('\nI am a tough guy!')
hello.close()  # 如果已经处理好了文件,那么不要忘了关闭文件


32c78a4c83ca456d8da1a92546d4f73a.png


以a模式写入:

1. hello = open('e:\\hello\\hello.txt')
2. hello.write('\nYou are my lover!')
3. hello.close()



现在再来看一下我们已经操作的文件内容:

1. hello = open('e:\\hello\\hello.txt', 'r')  # 当然你也可以省略'r'不写,因为python会默认只读模式
2. hello.read()  # w模式,a模式是不能用read()


3eb9bd706b9e44db970b350736e4003f.png

目录
打赏
0
0
0
0
7
分享
相关文章
Python图像处理实用指南:PIL库的多样化应用
本文介绍Python中PIL库在图像处理中的多样化应用,涵盖裁剪、调整大小、旋转、模糊、锐化、亮度和对比度调整、翻转、压缩及添加滤镜等操作。通过具体代码示例,展示如何轻松实现这些功能,帮助读者掌握高效图像处理技术,适用于图片美化、数据分析及机器学习等领域。
120 20
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
72 19
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
41 8
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 "hello world!" 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
35 4
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
70 12
通义灵码AI程序员实战:从零构建Python记账本应用的开发全解析
本文通过开发Python记账本应用的真实案例,展示通义灵码AI程序员2.0的代码生成能力。从需求分析到功能实现、界面升级及测试覆盖,AI程序员展现了需求转化、技术选型、测试驱动和代码可维护性等核心价值。文中详细解析了如何使用Python标准库和tkinter库实现命令行及图形化界面,并生成单元测试用例,确保应用的稳定性和可维护性。尽管AI工具显著提升开发效率,但用户仍需具备编程基础以进行调试和优化。
291 9
基于 Python 的布隆过滤器算法在内网行为管理中的应用探究
在复杂多变的网络环境中,内网行为管理至关重要。本文介绍布隆过滤器(Bloom Filter),一种高效的空间节省型概率数据结构,用于判断元素是否存在于集合中。通过多个哈希函数映射到位数组,实现快速访问控制。Python代码示例展示了如何构建和使用布隆过滤器,有效提升企业内网安全性和资源管理效率。
56 9
|
4月前
|
Python Internet 模块
Python Internet 模块。
147 74
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
232 23
Chainlit:一个开源的异步Python框架,快速构建生产级对话式 AI 应用
Chainlit 是一个开源的异步 Python 框架,帮助开发者在几分钟内构建可扩展的对话式 AI 或代理应用,支持多种工具和服务集成。
325 9

热门文章

最新文章