Python的文件操作介绍

news2025/2/24 16:41:04

一、编码格式介绍

1.1、常见的字符编码格式

1.2、Python字符编码格式

Python的解释器使用的是Unicode(内存)

.py文件在磁盘上使用UTF-8存储(外存)

#encoding=gbk

print('你好,中国')

二、文件的读写原理

2.1、文件的读写

文件的读写俗称“IO操作”,即输入输出操作

2.2、文件读写操作流程

2.3、操作原理

 

三、文件读写操作

3.1、内置函数open()创建文件对象


3.2、语法规则

file = open(filename [,mode,encoding])

3.3、文件的类型 

按文件中数据的组织形式,文件分为以下两大类

1、文本文件:存储的是普通“字符”文本,默认为unicode字符集,可以使用记本事程序打开

2、二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开 ,举例:mp3音频文件,jpg图片 .doc文档等

3.4、常用的文件打开模式

file=open('a.txt','r')
print(file.readlines())
file.close()
file=open('b.txt','w')
file.write('Python')
file.close()
file=open('b.txt','a')
file.write('Python')
file.close()
src_file=open('logo.png','rb')

target_file=open('copylogo.png','wb')

target_file.write(src_file.read())

target_file.close()
src_file.close()

 四、文件对象常用的方法

4.1、常用方法 

4.2、示例 

file=open('a.txt','r')
#print(file.read(2))

#print(file.readline())
print(file.readlines())
file.close()
file=open('c.txt','a')
#file.write('hello')
lst=['java','go','python']
file.writelines(lst)
file.close()
file=open('c.txt','r')
file.seek(2)
print(file.read())
print(file.tell())
file.close()
file=open('d.txt','a')
file.write('hello')
file.flush()
file.write('world')
file.close()
file=open('d.txt','a')
file.write('hello')
file.close()
#file.write('world')
#file.flush()

 五、with语句(上下文管理器)

5.1、with语句

with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

with open('a.txt','r') as file:
    print(file.read())
with open('logo.png','rb') as src_file:
    with open('copy2logo.png','wb') as target_file:
        target_file.write(src_file.read())

5.2、上下文管理器

MyContentMgr实现了特殊方法__enter__(),__exit__()称为该类对象遵守了上下文管理器协议
该类对象的实例对象,称为上下文管理器

class MyContentMgr(object):
    def __enter__(self):
        print('enter方法被调用执行了')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        print('exit方法被调用执行了')

    def show(self):
        print('show方法被调用执行了',1/0)

with  MyContentMgr() as file:    #相当于file=MyContentMgr()
    file.show()

六、目录操作

6.1、os模块

1、os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。

2、os模块与os.path模块用于对目录或文件进行操作

3、示例

#os模块与操作系统相关的一个模块
import  os
#os.system('notepad.exe')
#os.system('calc.exe')
#直接调用可执行文件
os.startfile('C:\\Program Files\\Tencent\QQ\\Bin\\qq.exe')

6.2、os模块操作目录相关函数

6.2.1、相关函数

import  os
print(os.getcwd())

lst=os.listdir('../chap15')
print(lst)

#os.mkdir('newdir2')
#os.makedirs('A/B/C')
#os.rmdir('newdir2')
#os.removedirs('A/B/C')
os.chdir('E:\\vippython\\chap15')
print(os.getcwd())
import  os
path=os.getcwd()
lst=os.listdir(path)
for filename in lst:
    if filename.endswith('.py'):
        print(filename)

6.2.2、os.walk()函数

import  os
path=os.getcwd()
lst_files=os.walk(path)
for dirpath,dirname,filename in lst_files:
    '''print(dirpath)
    print(dirname)
    print(filename)
    print('-------------------------------------')'''
    for dir in dirname:
        print(os.path.join(dirpath,dir))

    for file in filename:
        print(os.path.join(dirpath,file))
    print('----------------------------------')

 6.3、os.path模块操作目录相关函数

import  os.path
print(os.path.abspath('demo13.py'))
print(os.path.exists('demo13.py'),os.path.exists('demo18.py'))
print(os.path.join('E:\\Python','demo13.py'))
print(os.path.split('E:\\vipython\\chap15\\demo13.py'))
print(os.path.splitext('demo13.py'))
print(os.path.basename('E:\\vippython\\chap15\\demo13.py'))
print(os.path.dirname('E:\\vippython\\chap15\\demo13.py'))
print(os.path.isdir('E:\\vippython\\chap15\\demo13.py'))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1954235.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Servlet1-Servlet程序、请求处理、继承体系

目录 什么是Servlet 手动实现Servlet程序 ​编辑url地址如何定位到Servlet程序去访问 Servlet的生命周期 ​编辑GET和POST请求的分发处理 通过继承HttpServlet类实现Servlet程序 IDEA菜单生成Servlet程序 Servlet类的继承体系 ServletConfig类 ServletContext类 什么…

Docker学习与实战

一、Docker安装 移除旧版本docker sudo yum remove docker \docker-client \docker-client-latest \docker-common \docker-latest \docker-latest-logrotate \docker-logrotate \docker-engine配置docker yum源 sudo yum install -y yum-utils配置阿里云docker仓库 sudo y…

甄选范文“论软件测试中缺陷管理及其应用”软考高级论文,系统架构设计师论文

论文真题 软件缺陷指的是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。在目前的软件开发过程中,缺陷是不可避免的。软件测试是发现缺陷的主要手段,其核心目标就是尽可能多地找…

Nvidia GPU驱动安装报错显卡与驱动不兼容(本身兼容)

最近在公司服务器上遇到了一个特别离谱的问题,就是在本身在nividia官网上面下载的匹配的显卡驱动,安装之后采用下面命令查看驱动显示: $ nvidia-smiNVIDIA-SMI has failed because it couldnt communicate with the NVIDIA driver. Make su…

exe4j 使用jar包 打包exe程序,并且自带jre

1. 准备工作 1) 程序jar包一个 2) jdk自带jre文件夹一个 3)exe4j 程序 ,自行搜索 我用的5.1 4)图标(icon)文件一个,用来作为exe程序的图标 5) 图片(png/jpg等)用来打开…

LeetCode 118.杨辉三角 C++写法

LeetCode 118.杨辉三角 C写法 思路🧐: 我们使用vector来进行解答,该题规律简单,观察一下就可以发现,下一行的非1部分是上一行相同下标与上一行相同下标的前一个数据的和。难一点的是数据存储方式,C语言需要…

相机怎么选(不推荐,只分析)

title: 相机怎么选 tags: [相机, 单反相机] categories: [其他, 相机] 最近准备购买,相机怎么选,我去搜索了许多文章,整理了一篇小白挑选技术篇,供大家参考。 分类 胶片相机 需要装入胶卷才能使用的相机,拍照后可直…

【网络安全】子域名模糊测试实现RCE

未经许可,不得转载。 文章目录 正文总结 正文 在之前测试一个私人项目时,我报告了admin.Target.com上的Auth Bypass漏洞,这将导致SQLI&RCE ,该漏洞在报告后仅一天就被修复。 现在重拾该应用程序,对子域进行模糊测…

安德森四原则:从对称性破缺到复杂性涌现

中国物理学会期刊网 2023年06月20日 10:00 北京 以下文章来源于集智俱乐部,作者 Krakauer 导语 对称性破缺与复杂性的涌现有何关系?在几十年的研究进程中,诺奖得主、圣塔菲研究所发起人菲利普安德森(Philip Anderson&#xff09…

十四、【Python】基础教程-【Python全掌握】六大基础数据类型:字典(dict)类型的终极指南

目录 一、字典(dict) 1. 创建字典 2. 访问元素 3. 添加元素 4. 修改元素 5. 删除元素 6. 检查键是否存在 7. 获取字典的键、值、项 8. 遍历字典 9. 更新字典 10. 复制字典 11. 字典推导式 12. 获取默认值 13. 弹出元素 14. 清空字典 15. …

第15周 Zookeeper分布式锁与变种多级缓存

Zookeeper **************************************************************

Verilog语言和C语言的本质区别是什么?

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「C语言的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!! 用老石的一句话其实很好说…

前端八股文 promise async await 的理解

promise是什么 Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。 目的 解析 吴优编程 (解决异步编程中的嵌套问题的,将嵌套的格式 用peomise 写成同步) promise.then() 是成功后继…

【人工智能】人工智能概论(一):人工智能基本概概念、学派、发展历程与新一代人工智能

文章目录 1. 人工智能的基本概念与定义2. 人工智能的主要学派及主旨思想2.1. 符号主义学派:AI源自数学逻辑2.2. 连接主义学派:AI源自仿生学2.3. 行为主义学派:AI源自控制论 3. 人工智能的起源及发展历程4. 驱动新一代人工智能快速发展的因素 …

橙单后端项目下载编译遇到的问题与解决

今天下载orange-admin项目&#xff0c;不过下载下来运行出现一些问题。 1、涉及到XMLStreamException的几个类都出现下面的错误 The package javax.xml.stream is accessible from more than one module: <unnamed>, java.xml ctrl-shift-t 可以找到这个引入是哪些包里…

C++泛型编程,函数模板和类模板

C模板 模板概念&#xff1a;泛型编程&#xff0c;将类型参数化&#xff0c;在编译阶段不指定参数类型&#xff0c;运行阶段动态获取参数的技术&#xff0c;C中分为函数模板和类模板 语法&#xff1a; template<typename T> template -- 声明创建模板 typename -- 表…

Windows系统安装FinalShell

一、下载 通过百度网盘分享的文件&#xff1a;finalshell_install.exe 链接&#xff1a;https://pan.baidu.com/s/1_vcb_t-Cp4TZSN4nWUmLww 提取码&#xff1a;d6v8 二、安装 三、远程连接Linux系统 (1)打开VMware虚拟机 右键空白区域&#xff0c;点击open Terminal 输入命令…

数字信封+数字签名工具类测试样例(Java实现)

加解密过程 加密&#xff1a; 生成加密方SM2密钥对用于签名使用生成的SM2私钥生成数字签名生成SM4对称密钥对明文进行对称加密使用与解密方提前约定好的SM2公钥对第三步中的SM4对称密钥进行非对称加密把【加密方SM2公钥】、【数字签名】、【SM4对称加密后的密文】和【SM2非对…

Linux基础复习(四)

前言 上一篇文章配置了yum仓库和Tab自动补全&#xff0c;这一篇就开始详细介绍各命令 一、基础命令 pwd pwd命令全称Print Working Directory 打印工作目录&#xff0c;就是查看当前所在位置的目录路径 cd cd全称 Change Directory 切换目录&#xff0c;就是切换工作目录…

docker compose 安装rocketmq 4.x

官网参照 前置环境搭建 目录创建 创建两个目录 logs和store,用于存放日志和数据信息&#xff0c;位置随意&#xff0c;这里我放在/home/rockermq目录下 broker.conf 创建一个空文件broker.conf 在空文件中添加 # broker 对外提供服务的ip&#xff0c;如果是公网&#xff…