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

目录
相关文章
|
1月前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
2月前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
78 3
|
2月前
|
机器学习/深度学习 算法 数据挖掘
线性回归模型的原理、实现及应用,特别是在 Python 中的实践
本文深入探讨了线性回归模型的原理、实现及应用,特别是在 Python 中的实践。线性回归假设因变量与自变量间存在线性关系,通过建立线性方程预测未知数据。文章介绍了模型的基本原理、实现步骤、Python 常用库(如 Scikit-learn 和 Statsmodels)、参数解释、优缺点及扩展应用,强调了其在数据分析中的重要性和局限性。
72 3
|
22天前
|
Python
Python Internet 模块
Python Internet 模块。
119 74
|
10天前
|
算法 数据处理 Python
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
Savitzky-Golay滤波器是一种基于局部多项式回归的数字滤波器,广泛应用于信号处理领域。它通过线性最小二乘法拟合低阶多项式到滑动窗口中的数据点,在降噪的同时保持信号的关键特征,如峰值和谷值。本文介绍了该滤波器的原理、实现及应用,展示了其在Python中的具体实现,并分析了不同参数对滤波效果的影响。适合需要保持信号特征的应用场景。
59 11
高精度保形滤波器Savitzky-Golay的数学原理、Python实现与工程应用
|
2月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
123 63
|
1天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
14 3
|
1月前
|
移动开发 前端开发 Android开发
探索移动开发之旅:从应用构思到操作系统的深度理解
在数字时代的浪潮中,移动应用与系统是连接用户与技术的桥梁。本文将带领读者踏上一场移动开发的探险旅程,从应用的构思和设计出发,深入到移动操作系统的核心原理。我们将通过实际代码示例,展示如何将创意转化为现实,并解析背后的技术机制。无论你是初学者还是有经验的开发者,这篇文章都将为你提供新的视角和知识,帮助你更好地理解和掌握移动应用开发的艺术。
|
1月前
|
开发框架 .NET PHP
网站应用项目如何选择阿里云服务器实例规格+内存+CPU+带宽+操作系统等配置
对于使用阿里云服务器的搭建网站的用户来说,面对众多可选的实例规格和配置选项,我们应该如何做出最佳选择,以最大化业务效益并控制成本,成为大家比较关注的问题,如果实例、内存、CPU、带宽等配置选择不合适,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文将详细解析企业在搭建网站应用项目时选购阿里云服务器应考虑的一些因素,以供参考。
|
1月前
|
缓存 开发者 Python
深入探索Python中的装饰器:原理、应用与最佳实践####
本文作为技术性深度解析文章,旨在揭开Python装饰器背后的神秘面纱,通过剖析其工作原理、多样化的应用场景及实践中的最佳策略,为中高级Python开发者提供一份详尽的指南。不同于常规摘要的概括性介绍,本文摘要将直接以一段精炼的代码示例开篇,随后简要阐述文章的核心价值与读者预期收获,引领读者快速进入装饰器的世界。 ```python # 示例:一个简单的日志记录装饰器 def log_decorator(func): def wrapper(*args, **kwargs): print(f"Calling {func.__name__} with args: {a
43 2