博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python入门系列:文件操作
阅读量:7028 次
发布时间:2019-06-28

本文共 2603 字,大约阅读时间需要 8 分钟。

操作模式

r

"""

以只读方式打开文件(默认),文件的指针会放在文件的开头
若文件不存在,会报错
"""
f = open("a.txt", "r") # 在同级目录下打开文件
content = f.read()
print(content)
w

"""

以只写方式打开文件,文件的指针也在文件开头,进行覆盖写入(先清空后写入)
若文件不存在,会创建一个新的文件
"""
f = open("a.txt", "w")
f.write("66666")
a

与 w唯一不同的是,文件的指针会放在文件的末尾

增加b操作

"""

以二进制的方式进行文件操作 rb, wb, ab
将一张图片的一半内容写入到另外一个图片中
第二章图片可以打开浏览,是只有第一张一半的内容,还是图片质量下降呢?大家可以试一下
"""
fromFile = open("pic.jpg", "rb")
content = fromFile.read()
fromFile.close()
writeLen = len(conten) // 2
toFile = open("pic2.jpg", "wb")
toFile.write(content[0:writeLen])
toFile.close()
文件指针的定位

"""

seek(offset, whence=0)
whence表示指定文件指针所在的位置
whence=0:文件开始处,offset >= 0
whence=1:当前的位置,offset is free
whence=2:文件结尾处,offset <= 0
但是对于不带 b的文件操作,whence只能为 0
"""
f = open("a.txt", "r") # 当前文件内容:12345678
print(f.tell()) # 获得当前文件指针的位置 0
f.seek(2) # 向后移动两个单位
print(f.tell()) # 2
print(f.read()) # 345678
print(f.tell()) # 8
文件读操作

f.read(length):

length默认是文件所有内容的长度,文件指针自动向后移动

f = open("a.txt", "r") # 文件内容:12345

content = f.read(2)
print(content) # 12
print(f.tell()) # 4
readline(limit):

读取一行数据,会读入文件中的换行符

limit:限制的最大字符数

f = open("a.txt", "r") # 文件内容:123

456

print(f.readline(), end='') # 123

print(f.readline(), end='') # 456
readlines():

按照换行符对文件内容进行处理,处理好的每一行组成一个列表返回

f = open("a.txt", "r") # 文件内容:123

456

printf(f.readlines()) # ['123

', '456
']
遍历

直接遍历文件

f = open("a.txt", "r")

for i in f:
print(i, end='')

遍历 readlines()的结果

lines = f.readlines()

for line in f:
print(line, end='')
文件关闭

释放系统资源

将内存缓冲区中的内容同步到磁盘中
文件写入内容时,并不是立即写入到磁盘文件,而是在对应的内存缓冲区做修改,当文件关闭时,再一次性将这些修改拷贝到磁盘。
f.flush() 可以强制刷新内容到磁盘。
其他操作

依赖于os模块

重命名

import os

os.rename("b.txt", "a.txt") # 更改文件名称
os.rename("dir1", "dir2") # 更改目录名称
删除

import os

os.remove("b.txt") # 删除 b.txt
os.rmdir("dir1/dir2") # 删除了 dir2目录,若目录不为空,则无法删除
os.rmdirs("dir1/dir2") # 递归删除,若dir1为空,也删除
创建目录

import os

mkdir(path, mode) # mode=0o777 //权限设定方式参照 Linux

os.mkdir("dir1") # 一次只能创建一个目录,不能递归创建多个目录

路径相关操作

os.getcwd() 获得当前的目录

os.chdir() 改变当前所在路径

os.listdir() 获得目录下文件列表

文件相关案例

文件复制

import os

只读模式,打开要复制的文件

追加模式,打开副本文件

scr_file = open("d.txt", "r", encoding="utf-8")

obj_file = open("d_copy.txt", "w", encoding="utf-8")

从源文件中读取内容,写入到目标文件

while True:

content = scr_file.read(1024) # 如果文件过大,分块写入
if not content:
break
else:
obj_file.write(content)

关闭源文件和目标文件

scr_file.close()

obj_file.close()
文件分类,生成文件清单

import os

file_list = os.listdir(".")
res = {}
for file in file_list:
if "." not in file: # 排除掉目录
continue
appendix = file.split(".")[-1] # 获得扩展名

if appendix not in res:

res[appendix] = []

res[appendix].append(file)

print(res)
注:喜欢python + qun:839383765 可以获取Python各类免费最新入门学习资料!

转载于:https://blog.51cto.com/14186420/2349769

你可能感兴趣的文章
HTTP Error 503. The service is unavailable
查看>>
常用的排序、查找算法的时间复杂度和空间复杂度
查看>>
Android 检测SD卡状态
查看>>
SQL Server 查询所有包含某文本的存储过程、视图、函数
查看>>
Error response from daemon: conflict: unable to remove repository reference 解决方案
查看>>
【Dijkstra】CCF201609-4 交通规划
查看>>
loadRunner11的安装过程
查看>>
boost-同步-锁选项
查看>>
随机过程(方兆本,缪伯其)读书笔记-第一章-引论
查看>>
Wireless Penetration Testing (1-6 chapter)
查看>>
二分查找
查看>>
大嫂的HTML
查看>>
获取元素的宽高和位置(转自脚本之家)
查看>>
对于yum中没有的源的解决办法-EPEL
查看>>
web安全问题总结
查看>>
使用VMware 管理服务器
查看>>
初学 python 之 用户登录实现过程
查看>>
Spark性能调优
查看>>
BOS中控件非空 非0校验
查看>>
vue入门项目(vue + vuex + VueRouter + mint-ui)
查看>>