Python文件操作宝典:一步步教你玩转文件读写

简介: Python文件操作宝典:一步步教你玩转文件读写

前言

    掌握Python文件操作,解锁os、time、random模块的高级功能。从基础读写到目录管理、时间戳生成、随机数添加,实战案例带你领略高效安全的文件操作技巧。


一、文件

1.文件操作流程

1.打开文件

2.对文件中内容进行操作(读、写)

3.关闭文件

2.文件打开方式

2.1 直接打开

# 文件打开
# open()
# 语法:open(file,mode,encoding)
# file:要打开的文件(文件的路径【相对路径、绝对路径】)
# mode:文件的访问模式(在打开文件时需要指定,如果不指定,默认只读)
# encoding:在进行文件操作时可能会涉及到中文,如果不指定encoding参数会报错。参数值就是utf8
# open()方法的操作流程
# 1.文件对象 = open(file,mode,encoding)
# 2.通过文件对象调用方法实现读写操作
# 3.让文件对象调用close方法实现文件关闭
open("aaa.txt")
open("aaa.txt","r")

2.2 with方式打开

# with open()方法的操作流程-->推荐使用with语句
# 1.打开文件
# with open(file,mode,encoding) as 文件对象:
    # 2.在with缩进状态下对文件中的数据进行操作
# 3.关闭文件-->with不需要手动关闭--> 只要跳出with缩进状态,自动关闭文件句柄
# 使用with语句实现往文件中写入数据
with open("bbb.txt","w",encoding="utf8") as f:
    # 往文件中写入数据
    f.write("张三"+'\n'+"李四")
# 使用with语句实现从文件中读取数据
with open("bbb.txt","r",encoding="utf8") as f:
    # 从文件中读取数据
    data = f.read()
print(data)

3.文件访问模式

r:read 只读  不指定mode参数默认r;如果文件不存在则报错
w:write 只写  如果文件不存在则创建文件;如果文件存在且里面有内容,则覆盖原来的内容
a:add   追加  如果文件不存在则创建文件;如果文件存在则实现往文件中原有的内容后进行追加操作

4.文件读取数据

4.1 read()

# read()
# 语法:文件对象.read(n)
# 作用:从文件中读取n个字符;不指定参数默认读取文件中所有的内容;读取出来的数据类型是字符串
# 读取12个字符   "hello world\n"   \n换行符在字符串中也是一个字符,在控制台打印时会自动转义成换行效果
data = f.read()
print(data)
print(type(data))

4.2 readline()

# readline()
# 语法:文件对象.readline()
# 作用:一次读取一行数据;读取出来的数据类型是字符串;如果空行,读取到的数据是一个字符串"\n",不是空字符串
data1 = f.readline()
data2 = f.readline()
data3 = f.readline()
data4 = f.readline()
data5 = f.readline()
data = f.readline()
print(data)
print(type(data))
print(len(data))
# 使用readline方法实现获取文件中所有的内容
# 1. 一次readline读一行,不确定文件有多少行-->次数不确定-->死循环
while True:
    # 2.每循环一次,调用readline读取一行数据
    data = f.readline()
    # 3.死循环需要条件结束,如果文件中内容已经读取结束了,需要结束死循环--->读取到的数据的长度为0,或者字符串是一个空字符串
    if len(data) == 0:
        break
    else:
        print(data)

4.3 readlines()

# readlines()
# 语法:文件对象.readlines()
# 作用:以列表的形式读取文件中所有的内容,列表的每一项是文件的每一行
data = f.readlines()
print(data)

5.文件写入数据

# 文件写入数据
# 1.打开文件
f = open("bbb.txt","w",encoding="utf8")
# 2.文件操作-->读、写
# write()
# 语法:文件对象.write(字符串类型的数据)
# 作用:将字符串类型的数据写入文件中
f.write("你好"+"\n")
f.write("hello")
# 3.关闭文件
f.close()

6.文件关闭

# 关闭文件   文件对象.close()
f.close()

7.补充:相对路径与绝对路径

7.1 相对路径

相对路径有参照物,相对于当前文件来说,想要查询的文件的位置
<!-- 相对路径:要查询的文件相对于当前文件的位置
  同级文件: 文件名    例如:<img src="pic1.png"> 
  上一级文件:../    例如:<img src="../pic1.png">
  下一级文件:/     例如:<img src="img/pic1.png">
-->
    <img src="../mine/img/pic1.png">

7.2 绝对路径

1. 从盘符开始的路径   本地
2. 从http开始的路径   网络
<!-- 绝对路径:
  1.从盘符开始的路径  本地       <img src="C:\Users\86134\Pictures\Saved Pictures\400.png">
  2.从http开始路径    网络       <img src="https://t7.baidu.com/it/u=2141219545,3103086273&fm=193&f=GIF">
-->
<img src="https://t7.baidu.com/it/u=2141219545,3103086273&fm=193&f=GIF">

二、OS模块

1.对文件的操作

import os
# 注意:1.文件名不要与模块名重名   2.模块导入在文件最上方
# os模块
# 对文件的操作
# rename
# 语法:os.rename(old,new)
# 作用:实现给文件重命名(注意文件路径)
os.rename("../mine/img/pic1.png","pic2.png")
# remove
# 语法:os.remove(文件路径)
# 作用:删除指定文件(彻底删除,无法复原)
os.remove("bbb.txt")

2.对文件夹的操作

import os
# os模块对文件夹的操作
# mkdir   mk--》make制作生成   dir--》directory目录文件夹
# 语法:os.mkdir(文件夹要创建的位置路径)
# 作用:创建单级空目录
os.mkdir("喜羊羊")
# makedirs
# 语法:os.makedirs(文件夹要创建的位置路径)
# 作用:创建多级空目录
os.makedirs("喜羊羊/懒羊羊")
# rmdir   rm--》remove移除   dir目录
# 语法:os.rmdir(要删除的文件夹的路径)
# 作用:删除单级空目录
os.rmdir("小灰灰")
# removedirs
# 语法:os.removedirs(要删除的文件夹的路径)
# 作用:删除多级空目录
os.removedirs("喜羊羊/懒羊羊")
# listdir
# 语法:os.listdir(path)
# 作用:罗列指定目录下所有的文件,包括隐藏文件;如果不指定路径,默认展示当前文件所在的父级目录下的内容
print(os.listdir("c:"))

三、文件拷贝案例

1.案例要求

无论用户输入的文件在哪里,都能实现在原路径下进行拷贝

2.实现思路

1.让用户输入要拷贝的文件

2.根据源文件得到新的文件名及文件路径

3.从源文件中读取所有的内容

4.将所有的内容写入新文件中

3.具体实现

# 文件拷贝案例
# 1.让用户输入要拷贝的文件
file = input("请输入要拷贝的文件:")
# 2.根据源文件得到新的文件名及文件路径
# 整个字符串中最后一个点来区分文件名与后缀名-->获取最后一个点的下标位置-->rfind
num = file.rfind(".")
# 1>.获取源文件的文件路径及文件名
ole_file = file[:num]
# 2>.获取源文件的文件后缀
old_end = file[num:]
# 3>.在源文件的文件名及文件后缀中拼接 "-副本"
new_file = ole_file + "-副本" + old_end
print(new_file)
# 3.从源文件中读取所有的内容
# 1>.打开文件
with open(file,"r",encoding="utf8") as f:
    # 2>.一次性读取文件中所有的内容
    data = f.read()
# 4.将所有的内容写入新文件中
# 1>.打开文件  w(如果文件不存在则自动创建)
with open(new_file,"w",encoding="utf8") as f:
    # 2>.写入数据
    f.write(data)

四、补充内置模块

1.time 时间模块

import time
# time时间模块
# 文件名与模块名不要重名
# time()
# 语法:time.time()
# 作用:获取当前时间戳(从格林威治时间到当前电脑系统时间的秒数)
# 应用场景:统计程序的运行时长
print(time.time())
# sleep()
# 语法:time.sleep(n)
# 作用:让程序休眠n秒
# 应用场景:等待接收验证码
print("哈哈哈哈哈哈")
time.sleep(2)
print("嘿嘿嘿嘿嘿嘿")

2.random随机数模块

import random
# random随机数模块
# random()
# 语法:random.random()
# 作用:获取0-1之间的随机小数
print(random.random())
# randint()
# 语法:random.randint(a,b)
# 作用:获取a-b之间的随机整数,包括a和b
# 应用场景:生成随机验证码
print(random.randint(10,30))
# chioce()
# 语法:random.choice(数据)
# 作用:随机获取数据中的一个元素   支持的数据类型:要求有长度且获取到元素;字符串、列表、元组
# 应用场景:随机点名
print(random.choice("hello"))

3. json序列化模块

js 数组,对象   
python 列表,字典
序列化:将python列表、字典类型的数据转换成js字符串类型的数据
反序列化:将js字符串类型的数据,转换回python类型的数据
import json
# json序列化模块
# dump()
# 语法:json.dump(数据,文件对象,ensure_ascii=False)
# 作用:将python列表字典类型的数据进行序列化操作(转换成json字符串)存放在文件中
my_dict = {"user":"张三","phone":"14523698745","email":"admin123@qq.com","pwd":123456}
with open("1.txt","w",encoding="utf8") as f:
    json.dump(my_dict,f,ensure_ascii=False)
# load()
# 语法:json.load(文件对象)
# 作用:将文件中json字符串类型的数据读取出来且进行反序列化操作(转换回python类型)
with open("1.txt","r",encoding="utf8") as f:
    data = json.load(f)
print(data)
print(type(data))
# dumps()
# 语法:json.dumps(数据,ensure_ascii=False)
# 作用:将python列表字典类型的数据进行序列化操作(转换成json字符串)
my_dict = {"name":"张三","gender":"男","age":18}
my_str = json.dumps(my_dict,ensure_ascii=False)
print(my_str)
print(type(my_str))
# loads()
# 语法:json.loads(json字符串类型的数据)
# 作用:将json字符串类型的数据进行反序列化操作(转换回python类型)
dict2 = json.loads(my_str)
print(dict2)
print(type(dict2))
相关文章
|
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中的哈希表可用于创建简易文件索引,支持快速插入和查找文件路径。哈希表不仅提升了文件定位速度,还优化了存储管理和多节点数据一致性,确保文件共享工具高效运行,满足多用户并发需求,推动文件共享领域向更高效、便捷的方向发展。
|
4月前
|
存储 Python
Python文件操作(1)
【10月更文挑战第17天】
Python文件操作(1)
|
2月前
|
计算机视觉 Python
如何使用Python将TS文件转换为MP4
本文介绍了如何使用Python和FFmpeg将TS文件转换为MP4文件。首先需要安装Python和FFmpeg,然后通过`subprocess`模块调用FFmpeg命令,实现文件格式的转换。代码示例展示了具体的操作步骤,包括检查文件存在性、构建FFmpeg命令和执行转换过程。
76 7
|
4月前
|
数据采集 存储 Python
Python文件操作2
【10月更文挑战第18天】
Python文件操作2
|
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文件
|
3月前
|
开发者 Python
Python中__init__.py文件的作用
`__init__.py`文件在Python包管理中扮演着重要角色,通过标识目录为包、初始化包、控制导入行为、支持递归包结构以及定义包的命名空间,`__init__.py`文件为组织和管理Python代码提供了强大支持。理解并正确使用 `__init__.py`文件,可以帮助开发者更好地组织代码,提高代码的可维护性和可读性。
178 2

热门文章

最新文章

推荐镜像

更多