一、file文件操作

文本文件:存储的是普通字符文本,默认为unicode字符集。可以使用记事本打开

二进制文件:把数据内容用字节进行存储,无法使用记事本打开。

文件模块相关操作:

  • os模块:基本操作系统,主要为了文件操作

  • Io模块:文件流的输入和输出操作

  • cvs模块:用于cvs文件处理

  • pickle:用于序列化和反序列化

  • fileinput:处理多个输入文件

创建文件对象 open():f=open(r“path”,“a”)

  • r:读模式

  • w:写模式

  • a:追加模式,文件不存在创建,文件存在,再文件末尾追加内容

  • b: 二进制模式

如果没有追加b,创建的是文本文件对象,加入b创建的是二进制文件对象,处理的基本单元是字节。

文件的写入步骤:

  • 创建文件对象

  • 写入数据

  • 关闭文件对象

#简单文件的写入步骤
f = open(r"path","a")
s="abc"
f.write(s)
f.close()

二、编码知识

常用编码介绍

ASCII: 表示现代英语及其他西欧语言

兼容 utf-8,gbk。

unicode: 万国码,2个字节表示一个字符。Python默认为unicode。

gbk: 英文一个字节,汉字两个字节。 utf-8:英文一个字节,汉字三个字节。

中文乱码问题

windows默认gbk,linux默认utf-8.当我们打开时,以gbk打开 所以是乱码。

f=open(r“path“,“w”,encoding=“utf-8”)

三、关闭流要点

使用异常机制

write和writelines

writelines:把列表写入文件中,不添加换行符。自己手动换行

close()关闭流

使用finally或者with关键字实现无论何种情况都能关闭打开的文件对象。

#使用异常机制管理文件对象
try:f = open(r"path","a")s="abc"f.write(s)
except BaseException as  e:print(e)
finally:f.close()

with上下文管理

with open(r"path",“w”)as f

 f.writelines(f)

Note:如果要在一个程序中打开多个文件,f1,f2要区分开。、

四、文本文件的读取

  • read: 从文件中读取size个字符,不传的话默认读取整个文件。

  • readline:读取一行内容作为一个结果返回。

  • readlines:每一行作为一个字符串存入列表,返回该列表。

结构:

with open(r"path","r",encoding=""utf-8) as f:

五、enumerate()函数

#推导式生成列表
'''with open(r"D:\MongoDB\a.txt","w") as f:a="james\njordan\nkobe\n"f.write(a)
'''
with open(r"D:\MongoDB\a.txt","r",encoding="utf-8") as f1:lines=f1.readlines()c=[line.rstrip()+"#"+str(index) +"\n" for index,line in enumerate(lines)]print(c)with open(r"D:\MongoDB\a.txt","w",encoding="utf-8") as f1:f1.writelines(c)

六、二进制文件的读写

  • wb

  • ab

  • rb

七、 文件的拷贝

with open("aa.gif","rb") as f:with open("aacopy.gif","wb") as w:for line in f.readlines():w.write(line)print("图片拷贝完成")

八、文件对象常用属性方法和总结

  • 文件对象的属性:name,mode,closed

  • 文件对象的打开模式: r,w,a,b

  • 文件对象的常用方法:read, readline, readlines, write, writelines(未添加换行符), seek, close.

  • seek(offset,whence); whence: 0:从文件头开始计算,1:从当前位置开始,2:从尾部开始

#测试seek方法
with open("a.txt","r",encoding="utf-8") as f:print("文件名是:{0}".format((f.name)))print(f.tell()) #打印指针的位置print("读取的内容:{0}".format(f.readline()))print(f.tell())f.seek(3) #偏移print("读取的内容:{0}".format(f.readline()))

九、使用pickle序列化

  • pickle.dump(obj,file) obj就是要被序列化的对象,file指的是要存储的文件。

  • pickle.load(file) 从file读取数据,反序列化对象。

import pickle
with open("a.txt","wb") as f:a1="lixuan"a2=234a3=[20,30,40]pickle.dump(a1,f)pickle.dump(a2,f)pickle.dump(a3,f)
#反序列化
import pickle
with open("a.txt","rb") as f:a1=pickle.load(f)a2=pickle.load(f)a3=pickle.load(f)print(a1,a2,a3)

十、csv文件的读写

概念:csv十逗号分隔符文本格式。

  • 只能处理简单字符串

  • 不能嵌入图片

  • 无字体颜色,无单元格宽高设定

#测试csv文件读取和写入
import csv
with open("dd.csv","r") as f:a=csv.reader(f)for row in a:print(row)with open ("ee.csv","w") as f:b_csv=csv.writer(f)b_csv.writerow(["id","name","age"])b_csv.writerow(["01", "lixuan", "20"])

十一、os模块

os调用操作系统文件和命令

os.system 可以帮助我们直接调用系统的命令

os.startfile 直接调用可执行的文件。

os.path模块

  • isabs:判断绝对路径

  • isdir: 判断是否为目录

  • isfile: 判断是否为文件

  • exists: 判断是否存在

  • abspath: 返回绝对路径

  • getsize:返回文件的大小

  • join:连接多个path

  • split 对路径进行分割,以列表形式返回

  • walk 递归遍历目录

#测试os.path。import os#判断
print(os.path.isabs("d:/MongoDB/a.txt"))
print(os.path.isdir("d:/MongoDB/a.txt"))
print(os.path.isfile("d:/MongoDB/a.txt"))
print(os.path.exists("d:/MongoDB/a.txt"))#获得文件基本信息
print(os.path.getsize("d:/MongoDB/a.txt"))
print(os.path.abspath("d:/MongoDB/a.txt"))
print(os.path.dirname("d:/MongoDB/a.txt"))#对路径的操作path=os.path.abspath("a.txt")
print(os.path.split(path)) #将最后一层切出来
print(os.path.splitext(path)) #返回文件扩展品
print(os.path.join(path,"aa")) #将两个路径连接

walk方法遍历所有文件

os.walk() 返回一个三个元素的元组

  • dirpath

  • dirnames

  • filenames

#测试os.walk()import ospath=os.getcwd()
listFiles=os.walk(path)
for dirpath,dirnames,filenames in listFiles:for dir in dirnames:print(dir)for file in filenames:print(os.path.join(dirpath,file))

十二、shutil 模块

文件的拷贝

概念:shutil模块是用来做文件拷贝,移动删除以及压缩解压缩操作

import shutilshutil.copyfile("a.txt","b.txt")#目录的拷贝shutil.copytree("redis","redis1")

文件的压缩和解压缩

import shutil
import zipfile
#压缩文件
shutil.make_archive("redis1/yasuo","zip","redis")#解压缩与压缩z1=zipfile.ZipFile("d:/a.zip","w")
z1.write("a.txt")
z1.close()z2=zipfile.ZipFile("d:/a.zip","r")
z2.extractall("redis1")
z2.close()

十三、递归算法原理

概念:递归结构包括两个部分

本质:直接或间接的调用自己

  • 定义递归头

  • 递归体

遍历一个目录下的所有文件:

#遍历一个目录下所有的文件import osdef listFile(path,sp=""):fileList=os.listdir(path)sp+=" "for fileName in fileList:abs=os.path.join(path,fileName)if os.path.isdir(abs):print(sp+"目录名:",abs)else:print(sp+"文件名:",fileName)path=r"d:/MongoDB"
listFile(path)fileList1=[fileName for fileName in os.listdir(path) if fileName.endswith(".py")]
for f in fileList1:print(f,end="\n")

2020-11-13 Python 文件读写、os模块及递归函数相关推荐

  1. Python文件处理os模块介绍 -*- Python基础知识12 -*-

    文件处理 打开文件 open file mode encoding 操作文件 读取文档 逐个读取read 逐行读取 文件读取位置 写入文档 write 关闭文件 close with... as... ...

  2. python 文件操作 os模块和shutil模块

    转载自:http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html ############################## ...

  3. python文件读写、字典、习题、模块包库、pycharm、面向对象

    文件的读写 # #使用open()函数读取文件中的内容filepath='d:/note1.txt'file1=open(filepath) #打开d:/note1.txt open(文件路径,读写模 ...

  4. python文件读取模式_day-2 python 文件读写模式r,r+,w,w+,a,a+的区别

    r+和w+都是可读可写,区别在于r+读文件时,不会覆盖之前的内容,之前的内容能够读出来:w+读时,会覆盖之前的内容:所以读文件时,用r或者r+ #读操作 r 1 filepath = 'aa.log' ...

  5. seek是python文件操作方法吗,seek引发的python文件读写的问题

    我的需求很简单,就是统计一下我的安装脚本执行的次数和时间,格式是这样的 install_times:1|install_times:2018-09-03 15:58:46 install_times: ...

  6. python异步读写文件_一文彻底搞懂python文件读写

    Python文件读写 一,I/O操作 I/O在计算机中是指Input/Output,也就是Stream(流)的输入和输出.这里的输入和输出是相对于内存来说的,Input Stream(输入流)是指数据 ...

  7. python delimiter分隔符用法_使用Python文件读写,自定义分隔符(custom delimiter)

    众所周知,python文件读取文件的时候所支持的newlines(即换行符),是指定的.这一点不管是从python的doucuments上还是在python的源码中(作者是参考了python的io版本 ...

  8. python 输出文件分隔符_使用Python文件读写,自定义分隔符的方法

    使用Python文件读写,自定义分隔符的方法 发布时间:2020-07-06 11:07:56 来源:亿速云 阅读:121 作者:清晨 小编给大家分享一下使用Python文件读写,自定义分隔符的方法, ...

  9. python数据文件换行输出方法,Python文件读写时的换行符与回车符

    Python文件读写时的换行符与回车符 1. 背景知识 ASCII码中的换行符与回车符: 换行符 10 LF '\n' 回车符 13 CR '\r' 在操作系统的历史中,有很多种方法来表示另起一行,但 ...

  10. python文件传输模块ftplib模块的使用

    python文件传输模块ftplib模块的使用 文章目录: 一.ftplib介绍 1.ftplib的简单介绍 2.ftp的API说明 1)ftp登陆连接 2)ftp相关命令操作 二.ftplib实例说 ...

最新文章

  1. 程序员:提高编程效率的技巧
  2. 工业互联网企业如何做,才能“赋能万物,连接未来”?
  3. SQL基础【六、and与or】
  4. h5封装去底部_干货分享 | 一步一步教你在SpringBoot中集成微信支付H5支付
  5. 2021HDU多校6 - 7028 Decomposition(构造)
  6. JavaSE各阶段练习题----集合-Collection-Set-List
  7. python 字符串操作list【:-1】的几种用法
  8. JSP(九大内置对象)
  9. Android ImageView点击效果
  10. C++小游戏——24点
  11. 明日之后服务器维修公告维修,《明日之后》排队问题维护进度公告
  12. 服务器系统部署方案,系统部署方案.doc
  13. matlab三元方程拟合,3元函数拟合及结果.docx
  14. PS吸管工具用不了?
  15. 数字实现千分位分隔符
  16. (10-4)redis-hash数据类型
  17. 平面几何中点到直线上的投影计算
  18. provider: SQL Network Interfaces, error: 26 - 定位指定的服务器/实例时出错
  19. 国产电流传感器芯片CH701与ACS712的分析对比
  20. 移动信号e经常无服务器,手机信号差,从4G突然变成“E”?真实原因是这样的!...

热门文章

  1. idea取消英语拼音提示绿色波浪线
  2. C#实现驱动级模拟按键
  3. 数据预处理transforms
  4. Photoshop对图片加边框
  5. 期货大佬给交易者的交易箴言。
  6. HTTP协议和web服务技术---Apche配置
  7. 动态路由协议之OSPF基本原理、区域划分及配置
  8. 10/13 Total variation loss 全变分
  9. python小游戏:添加武器,查看武器,删除武器
  10. excel公式编辑器_巧用Excel制作炫酷聚光灯效果,数据查看太方便了