目录

一、文本文件和二进制文件

二、文件操作相关模块

三、创建文件对象open()

四、文本文件的写入

·基本的文件写入操作

·close()关闭文件流

·write()/writelines()写入数据

五、文本文件的读取

六、enumerate()函数

七、二进制文件的读取和写入

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

九、使用pickle序列化(记忆移动)

十、CSV文件的操作

·读

·写

十一、os和os.path模块

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

·文件和目录操作

·os.path模块

十二、shutil模块(拷贝和压缩)

十三、zipfile


一、文本文件和二进制文件

按文件中数据组织形式,我们把文件分为文本文件和二进制文件两大类。

1.文本文件

文本文件存储的是普通“字符”文本,默认为unicode字符集,可以使用记事本程序打开。但是,像word软件编辑的文档不是文本文件。

2.二进制文件

二进制文件把数据内容用“字节”进行存储,无法用记事本打开。必须使用专用的软件解码。常见的有:MP4视频文件、MP3音频文件、JPG图片、doc 文档等等。

二、文件操作相关模块

Python标准库中,有着许多文件操作相关的模块。

名称 说明
io模块 文件流的输入和输出操作 input  output
os模块 基本操作系统功能,包括文件操作
glob模块 查找符合特定规则的文件路径名
fnmatch模块 使用模式来匹配文件路径名
fileinput模块 处理多个输入文件
filecmp模块 用于文件的比较
csv模块 用于CSV文件处理
pickle和cPickle 用于序列化和反序列化
xml包 用于XML数据处理
bz2、gzip、zipfile、zlib、tarfile 用于处理压缩和解压缩文件(分别对应不同的算法)

三、创建文件对象open()

open()函数用于创建文件对象,基本语法格式如下:

open(文件名[,打开方式])

如果只是文件名,代表在当前目录下的文件。文件名可以录入全路径,为了减少“\”的输入,可以使用原始字符串。

#"D:\a\b.txt"可写成r"d: \b.txt"
f=open(r"d: \b.txt","w")

打开方式有如下几种:

模式 描述
r 读read模式
w 写write模式。如果文件不存在则创建;如果文件存在,则重写新内容
a 追加append模式。如果文件不存在则创建;如果文件存在,则在文件末尾追加内容
b 二进制binary模式(可与其他模式组合使用)
+ 读、写模式(可与其他模式组合使用)

文本文件对象和二进制文件对象的创建:

如果我们没有增加模式“b”,则默认创建的是文本文件对象,处理的基本单元是“字符”。如果是二进制模式“b”,则创建的是二进制文件对象,处理的基本单元是“字节”。

四、文本文件的写入

·基本的文件写入操作

文本文件的写入一般就是三个步骤:

1.创建文件对象

2.写入数据

3.关闭文件对象

f=open("路径","w")
f.write("写入内容")
f.close()

·close()关闭文件流

由于文件底层是由操作系统控制,所以我们打开的文件对象必须显式调用close()方法关闭文件对象。当调用close()方法时,首先会把缓冲区数据写入文件(也可以直接调用flush()方法),再关闭文件,释放文件对象。

为了确保打开的文件对象正常关闭,一般结合异常机制的 finally或者with关键字实现无论何种情况都能关闭打开的文件对象。

·write()/writelines()写入数据

write(a):把字符串a写入到文件中

writelines(b):把字符串列表b写入文件中,不添加换行符

五、文本文件的读取

文件的读取一般使用如下三个方法:

1. read([size])

从文件中读取size个字符,并作为结果返回。如果没有size参数,则读取整个文件读取到文件末尾,会返回空字符串。
2. readline()

读取一行内容作为结果返回。读取到文件末尾,会返回空字符串。

3. readlines()

文本文件中,每一行作为一个字符串存入列表中,返回该列表

#按行读取一个文件
with open("路径","r") as f:while True:fragment=f.readline()if not fragment:breakelse:print(fragment,end="")#使用迭代器按行读取
with open("路径","r") as f:for a in f:print(a,end="")

六、enumerate()函数

a=["I\n","love\n","you\n"]      #1.txt内的内容
with open("1.txt","r") as f:b = enumerate(f)print(b)print(list(b))
'''
结果为:
<enumerate object at 0x000002847EE342C0>
[(0, 'I\n'), (1, 'love\n'), (2, 'you\n')]'''

七、二进制文件的读取和写入

二进制文件的处理流程和文本文件流程一致。首先还是要创建文件对象,不过,我们需要指定二进制模式,从而创建出二进制文件对象。例如:

f=open(r"d:\a.txt" , 'wb')   #可写的、重写模式的二进制文件对象
f=open(r"d:\a.txt" , 'ab')   #可写的、追加模式的二进制文件对象
f=open(r"d:\a.txt" , 'rb')   #可读的二进制文件对象

创建好二进制文件对象后,仍然可以使用write()、read()实现文件的读写操作。

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

文件对象是常用属性

属性 说明
name 返回文件的名字
mode 返回文件的打开模式
closed 若文件被关闭则返回True

文件对象的常用方法

方法名 说明
read([size]) 从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容
readline() 从文本文件中读取一行内容
readlines() 把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str) 将字符串str内容写入文件
writelines(s) 将字符串列表s写入文本文件,不添加换行符
seek(offset[,whence])

把文件指针移动到新的位置,offset表示相对于whence的位置;

offset:
        off为正往结束方向移动,为负往开始方向移动

whence不同的值代表不同含义:
0:从文件头开始计算(默认值)

1:从当前位置开始计算
2:从文件尾开始计算

tell() 返回文件指针的当前位置
truncate([size]) 不论指针在什么位置,只留下指针前size个字节的内容,其余全部删除;
如果没有传入size,则当指针当前位置到文件末尾内容全部删除
flush() 把缓冲区的内容写入文件,但不关闭文件
close() 把缓冲区内容写入文件,同时关闭文件,释放文件对象相关资源

九、使用pickle序列化(记忆移动)

Python中,一切皆对象,对象本质上就是一个“存储数据的内存块”。有时候,我们需要将“内存块的数据”保存到硬盘上,或者通过网络传输到其他的计算机上。这时候,就需要“对象的序列化和反序列化”。对象的序列化机制广泛的应用在分布式、并行系统上。

序列化指的是:将对象转化成“串行化”数据形式,存储到硬盘或通过网络传输到其他地方。反序列化是指相反的过程,将读取到的“串行化数据”转化成对象。

我们可以使用pickle模块中的函数,实现序列化和反序列操作。

序列化我们使用:

import picklepickle.dump(obj, file)     #obj就是要被序列化的对象,file指的是存储的文件
pickle.load(file)          #从file 读取数据,反序列化成对象

十、CSV文件的操作

CSV是逗号分隔符文本格式,常用于数据交换、Excel文件和数据库数据的导入和导出。与 Excel文件不同,CSV文件中:

·值没有类型,所有值都是字符串

·不能指定字体颜色等样式

·不能指定单元格的宽高,不能合并单元格

·没有多个工作表

·不能嵌入图像图表

·读

import csv
with open("1.csv","r") as f:a=csv.reader(f)print(a)
#   print(list(a))        #[['数字1', '数字2', '数字3'], ['1', '2', '3'], ['1', '2', '3'], ['1', '2', '3']]for i in a:           #仅调用一次,在print(list(a))后无法用aprint(i)
'''
结果为:
<_csv.reader object at 0x0000011D5FE46A60>
['数字1', '数字2', '数字3']
['1', '2', '3']
['1', '2', '3']
['1', '2', '3']'''

·写

import csv
with open("1.csv","w") as f:a=csv.writer(f)a.writerow(["数字1","数字2"])a.writerow([1,2])b=[[1,2],[1,2]]a.writerows(b)
'''
写出文件为:
数字1,数字21,21,21,2'''

十一、os和os.path模块

os模块可以帮助我们直接对操作系统进行操作。我们可以直接调用操作系统的可执行文件、命令,直接操作文件、目录等等。在系统运维的核心基础。

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

#Windows系统下的操作
import osos.system("notepad.exe")
os.system("ping www.baidu.com")
os.system("cmd")#直接调用可执行程序
os.startfile(r"C:\Program Files (x86)\Tencent\QQ\Bin\QQScLauncher.exe")

·文件和目录操作

os常用操作文件方法

方法名 描述
remove(path) 删除指定的文件
rename(src,dest) 重命名文件或目录(将src重命名为dest)
stat(path) 返回文件的所有属性
listdir(path) 返回path目录下的文件和目录列表

os模块下关于目录操作的相关方法

方法名 描述
mkdir(path) 创建目录
makedirs(path1/path2/path3/...) 创建多级目录
rmdir(path) 删除目录
removedirs(path1/path2...) 删除多级目录
getcwd() 返回当前工作目录
chdir(path) 把path设为当前工作目录
walk() 遍历目录树
sep 当前操作系统所使用的路径分隔符
import os
print(os.name)            #Windows为nt Linux和Unix为posix
print(os.sep)             #Windows为\  Linux和Unix为/
print(repr(os.linesep))   #Windows为'\r\n' Linux和Unix为'\n'

·os.path模块

os.path模块提供了目录相关(路径判断、路径切分、路径链接、文件夹遍历)的操作

方法 描述
isabs(path) 判断path是否为绝对路径
isdir(path) 判断path是否为目录
isfile(path) 判断path是否为文件
exists(path) 判断指定路径的文件是否存在
getsize(filename) 返回文件的大小
abspath(path) 返回绝对路径
dirname(p) 返回目录的路径
getctime(filename) 返回文件的创建时间
getatime(filename) 返回文件的最后访问时间
getmtime(filename) 返回文件的最后修改时间
walk(top,func,arg) 递归方式遍历目录
join(path,*paths) 连接多个path
split(path) 对路径进行分隔,以列表形式返回
splitext(path) 从路径中分隔文件的扩展名

返回当前工作目录下的后缀为py的文件列表

import os
a=os.getcwd()
print(list(i for i in os.listdir(a) if i.endswith("py")))

十二、shutil模块(拷贝和压缩)

shutil模块是python标准库中提供的,主要用来做文件和文件夹的拷贝、移动、删除等;还可以做文件和文件夹的压缩、解压缩操作。

拷贝

import shutil
#shutil.copyfile("1.txt","l_copy.txt")
#shutil. copytree("movie/港台","电影")..#"电影"目录不存在时才能正常拷贝
shutil.copytree("movie/港台","电影" , ignore=shutil.ignore_patterns("*.txt")) #忽略txt文件

压缩

shutil.make archive("电影/gg","zip","movie/港台")
#                压缩后的路径,压缩格式,压缩的内容

十三、zipfile

import zipfile
#压缩
z1=zipfile.ZipFile("d:/a.zip","w")    #创建压缩的路径
z1.write("i.txt")                     #压缩进去的内容
z1.write("l_copy.txt")                #压缩进去的内容
z1.close()#解压缩
z2 = zipfile.ZipFile("d:/a.zip","r")  #解压缩的文件
z2.extractall("电影")                 #解压后的路径
z.close()

Python学习14(文件)相关推荐

  1. Python学习(14)--内置函数

    Python学习(14)--内置函数 1.Python内置函数 在Python中有很多的内置函数供我们调用,熟练的使用这些内置函数可以让编写代码时事半功倍,所谓内置函数就是那些Python已经预定义并 ...

  2. python进阶14文件路径(找不到文件)

    原创链接:python进阶14文件路径(找不到文件) 开发时遇到问题,文件路径不正确,找不到文件等等,都是这一类问题. curdir,argv,file 举例: 文件1代码: 1 2 3 4 5 6 ...

  3. [Python学习日记] 文件与文件系统(一)

    [Python学习日记] 文件与文件系统(一) 目录 Python3 File(文件) 方法 open() 方法 file 对象 目录 Python3 File(文件) 方法 open() 方法 Py ...

  4. python学习之文件处理

    Table of Contents 图片成批resize 多个文件夹中某文件,都保存到另一文件夹中 多个文件夹中某文件,都保存到另一文件夹中,并重命名 多个文件夹中,1/4数据用做测试集,其它用作训练 ...

  5. 《转》Python学习(14)-对文件的操作(一)

    转自 http://www.cnblogs.com/BeginMan/p/3166644.html 一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python ...

  6. python学习_22(文件)

    1 写一个函数,实现遍历一个数字和字母参杂的字符串,如果碰到字母则替换成,最后隔开的数字作为整体计算求和. 如"ab34aa243dd78eww89",则替换成的结果为:" ...

  7. Python学习之==文件操作

    1.打开文件的模式 1 r,只读模式(默认)[不可写:文件不存在,会报错] 2 w,只写模式[不可读:不存在则创建:存在则删除内容] 3 a,追加模式[不可读:不存在则创建:存在则追加内容] 4 r+ ...

  8. Python学习笔记——文件写入和读取

    1.文件写入 #coding:utf-8 #!/usr/bin/env python 'makeTextPyhton.py -- create text file'import os ls = os. ...

  9. Python学习:文件操作

    一.打开文件 1.格式 在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件,语法如下: open(name, mode) name:是要打开的⽬标⽂件名的字符串(可以包含 ...

最新文章

  1. STC单片机功率控制下载板
  2. git版本控制工具(二)----本地版本库的常用操作
  3. 【算法竞赛学习】金融风控之贷款违约预测-特征工程
  4. ubuntu 安装五笔
  5. 红米Redmi品牌独立首战告捷:半月多出货超100万
  6. 移动端引导页UI设计临摹模板,ui设计师进阶必备
  7. 设置eclipse主题风格
  8. 小学三年级计算机认识键盘教案,第8课 认识键盘大家庭 教案
  9. Vue中路由 (Vue Router)
  10. Another version of Vue Devtools seems to be installed报错
  11. 鸿濛和鸿蒙的区别,鸿蒙_若雪如痕_新浪博客
  12. putty下载与安装
  13. linux下socket编程(基础参考)
  14. 《炬丰科技-半导体工艺》RCA清洗系统及清洗液自适应预测温度
  15. C#ObjectArx Cad创建点线块
  16. MYSQL 那点破事,索引、SQL调优、事务、B+树、分表 ....
  17. java操作word生成水印升级版
  18. 新ipad 充电测试软件,iPad2020充电实测:标配20W却不支持PD快充
  19. Windows版微信加密存储图片的解密工具GUI程序
  20. python之获取网络时间

热门文章

  1. Java建立数据库连接池
  2. Jquery面试题总结
  3. LRU算法原理及实现
  4. 《千手数学出题助手》使用说明书
  5. 豆豆趣事[2016年05月]
  6. OpenHarmony啃论文俱乐部方法总结
  7. QQ里竟然可以自己跟自己说话,真是有点搞笑啊!
  8. 用 WebGL 探索动画和交互技术(一个学习案例) 1
  9. Appium: Android KEYCODE键值
  10. 2020.03.08测试题3