7_文件操作(代码片段)

q121211z q121211z     2022-12-08     549

关键词:

文件操作

文件操作的内容流程

计算机系统分为计算机硬件,操作系统,应用程序三部分。

? 编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,但应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

一、文件操作

1、语法

? f = open(文件,mode="模式", encoding="编码")
模式:
? r:只读
? w:只写
? a:追加写
? +:扩展
? b:字节(非文本文件)

open()

? 内置函数,open底层调用操作系统的接口
f :变量,也称为文件句柄;对文件进行的任何操作
encoding :可以不写,默认编码本:操作系统的默认的编码
? windows:gbk
? linux、mac:utf-8

2、文件操作三部曲

? a、打开文件
? b、对文件句柄进行操作
? c、关闭文件句柄

3、读取文件最好的方案 with:

? (还可以打开多个文件,之间用逗号隔开)

? with open() as f:
? for line in f:
? line = line.strip()

二、open()方法详解

1、用法

? open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。
? 注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法。

2、open()函数

open()函数常用形式是接收两个参数:文件名(file)和模式(mode)。
open(file, mode=‘r‘)
完整的语法格式为:
open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
参数说明:
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式
buffering: 设置缓冲
encoding: 一般使用utf8
errors: 报错级别
newline: 区分换行符
closefd: 传入的file参数类型

3、mode 参数

模式 描述
t 文本模式 (默认)。
b 二进制模式。

? +:打开一个文件进行更新(可读可写)。

? r 以只读方式打开文件。文件的指针将会放在文件的开头。(默认模式)
? rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
? r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
? rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

? w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
? wb 以二进制格式打开一个文件只用于写入。如果文件已存在则打开文件,并从开头开始编辑(原有内容会被删除)。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
? w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
? wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

? a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
? ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
? a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
? ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

? x 写模式,新建一个文件,如果该文件已存在则会报错。默认为文本模式,如果要以二进制模式打开,加上 b 。

4、file 对象常用的函数

? 函数 方法及描述
? file.read([size]) 从文件读取指定的字符数,未给定或为负则读取所有。
? file.readline([size]) 读取整行,包括 " " 字符。
? file.readlines([sizeint]) 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。

? file.write(str) 写入文件,返回写入的字符长度。
? file.writelines(sequence) 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

? file.close() 关闭文件。关闭后文件不能再进行读写操作。
? file.tell() 返回文件当前位置。以字节(中文:3字节,英文:1字节)为单位。
? file.seek(offset[, whence]) 移动文件读取指针到指定位置,0代表起始位置,1代表当前位置,2代表末尾(字节单位)。
? file.flush() 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件(保存文件), 而不是被动的等待输出缓冲区写入。

三、文件改操作

1、步骤:

? a、以读的模式打开原文件
? b、以写的模式创建一个新文件
? c、将原文件的内容读出来修改成新内容,写入新文件
? d、将原文件删除
? e、将新文件重命名成原文件名

2、实例

实例一

简版(一次性读取和写入),针对小文件,遇到大文件是内存读取不了
import os
# 文件的改操作
# 第一、二步,以只读方式打开原文件,以写方式打开新文件。
with open(‘aa/hello.txt‘, encoding=‘utf-8‘) as f1,open(‘aa/hello.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2:
	# 第三步,修改内容,写入新文件。
    old_content = f1.read()
    new_content = old_content.replace(‘hello‘, ‘你好‘)
    f2.write(new_content)
# 第四步,将原文件删除。
os.remove(‘aa/hello.txt‘)
# 第五步,将新文件重命名为原文件名
os.renames(‘aa/hello.bak‘, ‘aa/hello.txt‘)

实例二

# 进阶版(逐行读取和写入,每次一行,减少了内存的开销)
import os
# 文件的改操作
# 第一、二步,以只读方式打开原文件,以写方式打开新文件。
with open(‘aa/hello.txt‘, encoding=‘utf-8‘) as f1,        open(‘aa/hello.bak‘, encoding=‘utf-8‘, mode=‘w‘) as f2:
    # 第三步,修改内容,写入新文件。
    for line in f1:
		old_line = line.strip()
        new_line = old_line.replace(‘hello‘, ‘你好‘)
        f2.write(new_line)
# 第四步,将原文件删除。
os.remove(‘aa/hello.txt‘)
# 第五步,将新文件重命名为原文件名
os.renames(‘aa/hello.bak‘, ‘aa/hello.txt‘)
# 注意:write清空问题;只有关闭文件再打开写入时才会清空,一次操作时没有关闭文件时
可以反复写入。

四、os简单操作

os.path() 模块os.path 模块主要用于获取文件的属性。

以下是 os.path 模块的几种常用方法:
方法 说明
os.path.abspath(path) 返回绝对路径
os.path.basename(path) 返回文件名
os.path.dirname(path) 返回文件路径
os.path.exists(path) 路径存在则返回True,路径损坏返回False
os.path.join(path1[, path2[, ...]]) 把目录和文件名合成一个路径
os.path.getsize(path) 返回文件大小,如果文件不存在就返回错误
os.path.isfile(path) 判断路径是否为文件
os.path.isdir(path) 判断路径是否为目录
os.path.isabs(path) 判断是否为绝对路径
os.path.split(path) 把路径分割成 dirname 和 basename,返回一个元组
os.path.splitdrive(path) 一般用在 windows 下,返回驱动器名和路径组成的元组
os.path.splitext(path) 分割路径,返回路径名和文件扩展名的元组
os.path.splitunc(path) 把路径分割为加载点与文件
os.path.lexists 路径存在则返回True,路径损坏也返回True
os.path.getatime(path) 返回最近访问时间(浮点型秒数)
os.path.getmtime(path) 返回最近文件修改时间
os.path.getctime(path) 返回文件 path 创建时间

五、OS 文件/目录常用方法

os 模块提供了非常丰富的方法用来处理文件和目录。常用的方法如下表所示:

序号 方法及描述
os.chdir(path) 改变当前工作目录
os.getcwd() 返回当前工作目录
os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表。
os.remove(path) 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。
os.removedirs(path) 递归删除目录。
os.rename(src, dst) 重命名文件或目录,从 src 到 dst
os.renames(old, new) 递归地对目录进行更名,也可以对文件进行更名。
os.rmdir(path) 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
os.path 模块 获取文件的属性信息。
os.mkdir(path[, mode]) 以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。
os.open(file, flags[, mode]) 打开一个文件,并且设置需要的打开选项,mode参数是可选的
os.read(fd, n) 从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。
os.write(fd, str) 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度
os.close(fd) 关闭文件描述符 fd
os.chmod(path, mode) 更改权限


















































































linux06_mysql5.7.24如何安装(代码片段)

...本,不适用此说明文档,主要原因在于之后版本的mysql配置文件的目录位置和结构有所改变,使用此说明可能会出现找不到配置文件或者配置后不生效的情况(2).安装过程中务必保证文件路径的前后统一,否则可能会导致不可预期的结... 查看详情

2.5.1集合操作(代码片段)

本节内容1,集合操作2,练习题一、集合set类型set数据类型:s=11,22,33特点:1,元素无序且唯一。2,可以存放各种数据类型。3,天生去重。主要作用:1,去重2,关系测试数据:list_1=1,3,4,5,6,7,9list_1=2,6,0,66,22,8,41,构建方法#基于列表... 查看详情

day11集合集合操作(代码片段)

集合操作去重:把一个列表变成集合,就自动去重了关系测试:测试两组数据之前的交集、差集、并集等关系集合:无序list_1=[1,4,5,7,3,6,7,9]#字符串->集合list_1=set(list_1)list_2=set([2,6,0,66,22,8,4])#去重print(list_1,type(list_1))>>>1,3,... 查看详情

7文件操作(代码片段)

一打开文件的方式1 f=open(‘文件名或者文件路径‘,mode=‘打开方式’,encoding=‘utf8‘)f.close()2withopen(‘文件名或者文件路径‘,mode=‘打开方式’,encoding=‘utf8‘)asf,  open(‘文件名或者文件路径‘,mode=‘打开方式’,encoding=‘ut... 查看详情

opencv基础操作_视频读取(代码片段)

1视频文件读取1.1cv2.VideoCapture() 在OpenCV中,可以使用VideoCapture来读取视频文件,或是摄像头数据。函数定义:ReadingandWritingImagesandVideo—OpenCV2.4.13.7documentationPython: cv2.VideoCapture() →<VideoCapture object>¶Python: cv2.Video... 查看详情

达梦7备份与还原(代码片段)

...还原相关操作。详细的文档,可以查看达梦安装目录下的文件doc/special/DM7备份与还原.pdf基础概念备份集这个概念频繁出现在文档和命令中,一定要先熟悉。备份集用来存放备份过程中产生的备份数据及备份信息。一个备份集对... 查看详情

4_3读取csv文件(代码片段)

 1"""读取csv文件"""234importcsv56defreadcsv_demo1():7"""采用列表形式,下标操作"""8withopen(‘csvwriter.csv‘,‘r‘)asfp:9#reader是一个迭代器10reader=csv.reader(fp)11next(reader)#向下走一行12forxinreader:13#print(x)14name=x[1] 查看详情

文件操作_1-24选择题(代码片段)

下列程序的运行结果是()(选择一项) 结果todayissunnyaninterstingstory  查看详情

scrapy学习-7-数据存储至数据库(代码片段)

使用MySQL数据库存储安装mysql模块包pipinstallmysqlclient 相关库文件sudoapt-getinstalllibmysqlclient-develsudoapt-getinstallpython-develmysql-devel 阻塞型的数据写入操作classMysqlPipeline(object):def__init__(self):self.c 查看详情

文件操作(代码片段)

一、打开文件1.格式:fopen(<#constchar*restrict__filename#>,<#constchar*restrict__mode#>);fopen("/Users/apple/Desktop/test.txt","a+");第一个参数表示数据源,第二个表示方式r必须打开一个存在的文件 如果文件不存在直接失败从头开始读&n... 查看详情

python文件操作_对文件进行复制拷贝_代码实现(代码片段)

 要求:1,对已经存在的文件进行复制操作2,复制后的文件在文件名后面加上[复件]3,文件比较大如何优化处理1#-*-coding:UTF-8-*-2#这是python2下面写的,用的raw_input3#old_file_name用来接收输入的文件名4old_file_name=raw_input(‘请输入... 查看详情

python基础入门笔记———文件操作面向对象异常模块包(代码片段)

文章目录一、文件操作1.1文件的基本操作1.1.1打开1.1.2打开文件模式1.1.3文件对象方法1.1.3.1写1.1.3.2读1.1.2.3seek()1.1.4关闭1.2文件备份1.3文件和文件夹操作1.3.1文件/文件夹重命名1.3.2删除文件1.3.3创建文件夹1.3.4删除文件夹1.3.5获取当... 查看详情

python基础入门笔记————文件操作面向对象异常模块包(代码片段)

文章目录一、文件操作1.1文件的基本操作1.1.1打开1.1.2打开文件模式1.1.3文件对象方法1.1.3.1写1.1.3.2读1.1.2.3seek()1.1.4关闭1.2文件备份1.3文件和文件夹操作1.3.1文件/文件夹重命名1.3.2删除文件1.3.3创建文件夹1.3.4删除文件夹1.3.5获取当... 查看详情

大数据技术之_20_elasticsearch学习_01_概述+快速入门+javaapi操作+创建删除索引+新建搜索更新删除文档+条件查询+映射操作(代码片段)

一概述1.1什么是搜索?1.2如果用数据库做搜索会怎么样?1.3什么是全文检索和Lucene?1.4什么是Elasticsearch?1.5Elasticsearch的适用场景1.6Elasticsearch的特点1.7Elasticsearch的核心概念1.7.1近实时1.7.2Cluster(集群)1.7.3Node(节点)1.7.4Index(... 查看详情

djangoorm操作(代码片段)

一,用一个单独的py文件测试orm操作需要配置的参数  在应用中新建一个test.py的测试文件来实现orm操作:importosif__name__=="__main__":os.environ.setdefault("DJANGO_SETTINGS_MODULE","day58.settings")#以上代码实在当前项目的manage.py中copy的importdjang... 查看详情

文件操作_1-22选择题(代码片段)

阅读下列向文件写入内容的程序,已知输出结果为:taskhappijklmn,文件原有内容为:abcdefghijklmn。下列对程序的补充正确的是()(选择一项)答案fwrite($handle,‘happy‘,4);fseek($handle,0);  查看详情

cdh搭建和集成sparkkafka操作(代码片段)

包下载:由于是离线部署,因此需要预先下载好需要的文件。需要准备的文件有:ClouderaManager5文件名:cloudera-manager-centos7-cm5.14.0_x86_64.tar.gz下载地址:https://archive.cloudera.com/cm5/cm/5/CDH安装包(Parecls包)版本号必须与ClouderaManager相对应... 查看详情

centos-7-x86_64iso镜像的安装(linux操作系统)(代码片段)

...tation,这篇文章来安装Linux操作系统,使用的镜像文件是CentOS-7-x86_64-DVD-2009.iso一、镜像下载镜像下载可以去官网下载,也可以使用镜像网站去下载,这里给出阿里云开源镜像的下载网站。阿里云centos7镜像下载这里... 查看详情