什么是文件 ?


文件的作用
- “好记性不如烂笔头”。
不仅人的大脑会遗忘事情,计算机也会如此,比如⼀个程序在运⾏过程中⽤了九牛二虎之力终于计算出了结果,试想⼀下如果不把这些数据存放起来,相⽐重启电脑之后,“哭都没地⽅哭了” 可见,在把数据存储起来有做么⼤的价值 。
使⽤⽂件的⽬的:
- 把⼀些存储存放起来,可以让程序下⼀次执行的时候直接使用,而不必重新制作⼀份,省时省力 。
Python文件
文件对象是Python代码调用电脑上存放在外部文件的主要接口,能够用于读取和写入文本记录、音频片段、Excel文档、保存邮件以及任何保存在电脑上的东西。
下面是一些Python文件对象的基本操作:
文件的打开与关闭
1. 打开⽂件
在python,使⽤open函数,可以打开⼀个已经存在的文件,或者创建⼀个新文件
- open(⽂件名,访问模式)
示例如下:
# w 写⼊模式 r 读取模式
f = open('a.txt', 'w')
访问模式 说明:
r 只⽤于读取, 默认模式。⽂件不存在,会报错。
w 只⽤于写⼊。⽂件存在则先清空内容, ⽂件不存在,创建新⽂件。
a 只⽤于写⼊。⽂件存在则追加内容, ⽂件不存在,创建新⽂件。
r+ ⽤于读写。⽂件不存在,会报错。
w+ ⽤于读写。⽂件存在则先清空内容, ⽂件不存在,创建新⽂件。
a+ ⽤于读写。⽂件存在则追加内容, ⽂件不存在,创建新⽂件。
rb ⼆进制格式的只读操作。后续⽹络课程中具体讲解。
wb ⼆进制格式的只写操作。后续⽹络课程中具体讲解。
ab ⼆进制格式的追加操作。后续⽹络课程中具体讲解。
2. 关闭⽂件
- close( )
示例如下:
# 新建⼀个⽂件,⽂件名为:123.txt
f = open('123.txt', 'w')
# 关闭这个⽂件
f.close()
3.自动关闭文件
文件操作往往需要打开,处理,关闭,如果忘记关闭,就会占用资源造成浪费。python为我们提供with 命令,帮助我们在处理文件后自动进行关闭回收。
with如何工作?
- 紧跟with后面的语句被求值后,返回对象的'__enter__()'方法被调用,这个方法的返回值将被赋值给as后面的变量.
- 当with后面的代码块全部执行完之后,将被调用前面返回对象的__exit__()方法.
with原理示例:
# -*- coding: utf-8 -*-
# 自定义 Context Manager
class File(object):
def __init__(self, filename, mode):
# 设定文本名与打开方式
self.filename = filename
self.mode = mode
# 资源配置
def __enter__(self):
print("打开文本:" + self.filename)
self.open_file = open(self.filename, self.mode)
return self.open_file
# 资源回收(关闭文本)
def __exit__(self, type, value, trace):
print("关闭文本:" + self.filename)
self.open_file.close()
with 使用:
with open("123.txt", "w") as f:
pass # 执⾏完缩进代码, 会⾃动关闭⽂件
文件的读写
1. 写数据(write)
# 使⽤write()可以完成向⽂件写⼊数据
# 打开⽂件 w write 写⼊ r read 读取
f = open("123.txt", "w")
# 写⼊数据
f.write("hello world")
# 关闭⽂件
f.close()
2. 读数据(read)
# read(n) n为读取的字符数, 不设置则全部读取
with open("123.txt", "r") as f:
content = f.read()
3. 读数据(readline)
readline() 每次读取⼀⾏数据
with open("123.txt", "r") as f:
content = f.readline()
print(content, end="")
4. 读数据(readlines)
readlines() ⼀次全部读出, 返回列表 (每⾏内容是⼀个元素)
with open("123.txt", "r") as f:
content = f.readlines()
print(content)
文件的定位读写
⽂件的读写都会改变⽂件的定位
f.tell() :可以查看⽂件的当前定位
f.seek(offset, whence)
- offset 基于whence做偏移
- whence 0 移动定位到文件开头 1定位不变 2移动定位到文件结尾
- 只能对文件开头设置偏移(whence=1或者2时,offset只能为0)
with open("123.txt", "w+") as f:
# 查看⽂件的当前定位
# print(f.tell())
f.write("hello python")
# print(f.tell())
# 改变⽂件的定位 先移动定位到⽂件开头,再将定位向后移动2个字节
f.seek(2, 0)
content = f.read()
print("读取的内容为%s" % content)
文件的其他相关操作
有些时候,需要对⽂件进⾏重命名、删除等⼀些操作,python的os模块中有这些功能
1. ⽂件重命名
os模块中的rename()可以完成对⽂件的重命名操作
- rename(需要修改的文件名, 新的文件名)
import os
os.rename("毕业论⽂.txt", "毕业论⽂-最终版.txt")
2. 删除⽂件
os模块中的remove()可以完成对文件的删除操作
- remove(待删除的文件名)
import os
os.remove("毕业论⽂.txt")
3. 创建文件夹
import os
os.mkdir("张三")
4. 获取当前目录
import os
os.getcwd()
5. 改变默认目录
import os
os.chdir("test") # 跳转到当前路径的test⼦⽬录中
6. 获取目录列表
import os
os.listdir()
7. 删除文件夹
import os
os.rmdir("张三")
目录非空不能使用,可以使用递归的方式进行删除
更多:https://blog.csdn.net/Scrat_Kong/article/details/90257118