Python进阶——文件及IO操作

一、文件的基本操作

创建文件对象和打开文件对象:open()

def my_write():#(1)打开(创建)文件file=open('Myqq.txt','w',encoding='utf-8')
#如果文件不存在,则在当前目录下创建一个文件名字为Myqq.txt#(2)操作文件file.write('我好爱她')#(3)关闭文件file.close()#读取
def my_read():#(1)打开(创建)文件f=open('Myqq.txt','r',encoding='utf-8')s=f.read()print(type(s),s)f.closeif __name__ == '__main__':my_write()my_read()

一、文件的状态和操作过程

文件没打开时是存储状态,使用open打开之后变成占用状态(其他程序不能占用)。

二、文件的操作

一、打开方式

a表示append。

r/w是文本方式打开,按照字符的方式读写。(而非字节流)

默认方式下文件是以读方式打开的:

file=open('a.txt')
print(file)#<_io.TextIOWrapper name='a.txt' mode='r' encoding='cp936'>
file.close()
file=open('Myq.txt','r+') #表示有读写功能
file=open('Myq.txt','w+') #表示有读写功能,并且是覆盖写
二、读写方式

offset是字节位置。

无论是read()还是readlines()等都从读写指针开始的。

file,readlines()每一行是列表中的一个元素

file=open('a.txt','w+',encoding='utf-8')
lst=['北京','上海','天津']
file.writelines(lst) #直接将列表中的元素挨个写入file
file.seek(0)
for item in file:print(item) #北京上海天津
#相当于print(file.read())
file.close()
def my_write(s):# (1)打开(创建文件)文件file = open('myqq.txt', 'a', encoding='utf-8')file.write(s)file.write('\n')file.close()def my_write_list(file, lst):f = open(file, 'a', encoding='utf-8')f.writelines(lst)f.close()def my_read(filename):file=open(filename,'a+',encoding='utf-8')file.write('炙热的渴望是勇气')file.seek(0)#写指针导致读写指针指在最后,重置指针以便于从头读取s=file.read(10)#读取10个字符,可能是10个汉字s=file,readline()print(s)s=file.readline(2)print(s)file.close()if __name__ == '__main__':# my_write('她静悄悄地来过')# my_write('她慢慢带走沉默')# lst = ['从一个眼神\n', '一次谈心\n', '到变懂得变熟悉\n']# my_write_list('myqq.txt', lst)my_read('myqq.txt')
三、文件的复制
def copy(src,new_path):#假如读取的是图片文件,用二进制读#实际上就是边写边读file1=open(src,'rb')file2=open(new_path,'wb')s=file1.read()#读取所有,返回的是二进制file2.write(s)#写入所有file2.close()file1.close()#先打开的后关,后打开的先关。if __name__ == '__main__':src='./Myqq.jpg'  #.代表的是当前目录new_path='../Module/Myzwq.jpg' #..表示的是上级目录,相当于windows里的后退。后退一步的文件夹里必须有Module这个文件夹。copy(src,new_path)
四、with语句

open()是打开文件的操作,as file是给该文件起个别名。在with语句的语句块中,不需要手动关闭文件。

print()
with open('Myqq.txt', 'a', encoding='utf-8') as file:file.write('输了你!赢了世界又如何\n')
print()
#像for循环语句一样,这是一个顺序执行的
def copy(src,new_file):with open(src,'r',encoding='utf-8'):#打开src文件with open(new_file,'w',encoding=='utf-8'):
#在src打开的过程中,再打开new_file,必须嵌套打开,src才保证一直打开着new_file.write(src.read())

二、高维数据的存储和组织

def my_write():# 一维数据 可以用字符串操作将列表转换成字符串lst = ['输了你!', '我们的爱', '除了爱你还能爱谁']with open('JJLin.txt', 'w', encoding='utf-8') as file:file.writelines(lst)def my_read():with open('JJLin.txt', 'r', encoding='utf-8') as file:print(file.readlines())my_write()
my_read()
def my_write_table():#二维数据lst=[['商品名称','单价','采购数量'],['水杯','98.5','20'],['鼠标','89','100'],]with open('table.csv','w',encoding='utf-8') as file:for item in lst:line=','.join(item)file.write(line)file.write('\n')
def my_read_table():#二维数据data=[]with open('table.csv','r',encoding='utf-8') as file:lst=file.readlines() #②每一行是列表中的一个元素for item in lst:#③new_lst=item[:len(item)-1].split(',') #④切掉\n,并以','切割 返回一个列表data.append(new_lst)#④
my_write_table()#①
my_read_table()
'''
①:
商品名称,单价,采购数量
水杯,98.5,20
鼠标,89,100
②
lst=['商品名称,单价,采购数量\n','水杯,98.5,20\n','鼠标,89,100\n']
③
item='商品名称,单价,采购数量\n'
切片后:'商品名称,单价,采购数量'
split()后:new_lst=['商品名称','单价','采购数量']
④data=[['商品名称','单价','采购数量']]
循环③
'''

高维数据: 

import json
lst=[{'name':'Zy','age':21,'score':97.9},{'name':'Ly','age':21,'score':97.9},{'name':'Lwq','age':21,'score':97.9}
]#编码
s=json.dumps(lst,ensure_ascii=False,indent=4)
#ensure_ascii正常显示中文,indent缩进格式增加缩进
print(type(s))#  list-->str ,列表中是字典
print(s)#解码
lst2=json.loads(s)
print(type(lst2))
print(lst2)#编码到文件中
with open('student.txt','w') as file:json.dump(lst,file,ensure_ascii=False,indent=4)with open('student.txt','r') as file:json.load(lst,file,ensure_ascii=False,indent=4)

三、os模块中常用的函数

一、os模块

getcwd()返回的是字符串类型。

import os
print('当前工作路径:',os.getcwd())
lst=os.listdir()
print('当前路径下的所有目录及文件:',lst)
print('D:\Program Files下的所有目录及文件:',os.listdir('D:\Program Files'))
#创建文件夹
os.mkdir('好好学习') #已经存在不能创建
os.makedirs('./好好学习/aa/bb/cc/dd') #已经存在不能创建
#删除目录
os.rmdir('./好好学习/aa/bb/cc/dd') #./表示当前路径,当前路径可以不写
os.removedirs('好好学习/aa/bb/cc')#设置当前路径
os.chdir('D:\Program Files')
#执行完这条语句之后,再写代码工作路径就是更改后的路径,但是本文件位置没变,运行路径变化
print('当前工作路径:',os.getcwd())
file=open('MMM.txt','w')
file.close()#遍历目录树,递归遍历输出所有文件夹中的内容
for dirs,dirlst,filelst in os.walk('D:\Program Files'):print(dirs)print(dirlst)print(filelst)print('-'*20)#删除指定的文件
os.remove('MMM.txt') #删除当前路径下的MMM.txt文件,注意当前路径之前被更改过
#os.remove('C:\\Users\Administrator\Desktop\pythonProject\\text.txt') #'\t'需要转义字符\\t#缘神启动!
os.startfile("E:\Program Files\腾讯游戏\WeGame\wegame.exe")

二、os.path子模块

exists(path)的使用可以避免使用同一个操作重复创建文件。

比如 if os.path.exists(path_to_file):

                f=open(file)

import os.path as op
print('获取目录或文件的绝对路径',op.abspath('./JJLin.txt'))#必须给参数
#绝对路径指的是从盘符开始的
print('判断目录或文件在磁盘上是否存在',op.exists('JJLin.txt')) #相对路径
print('判断目录或文件在磁盘上是否存在',op.exists('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher\launcher.exe'))
print('分割文件的名和文件后缀名:',op.splitext('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher\launcher.exe'))
print('提取文件名:',op.basename('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher\launcher.exe'))
print('提取路径:',op.dirname('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher\launcher.exe'))print('是否是有效路径(文件夹):',op.isdir('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher')) #判断文件夹!
print('是否是有效路径(文件夹):',op.isdir('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher\launcher.exe')) #判断文件夹!
print('是否是有效文件:',op.isfile('E:\WeGameApps\\rail_apps\无畏契约(2001715)\WeGameLauncher\launcher.exe')) #判断文件夹!'''
获取目录或文件的绝对路径 C:\Users\Administrator\Desktop\pythonProject\JJLin.txt
判断目录或文件在磁盘上是否存在 True
判断目录或文件在磁盘上是否存在 True
分割文件的名和文件后缀名: ('E:\\WeGameApps\\rail_apps\\无畏契约(2001715)\\WeGameLauncher\\launcher', '.exe')
提取文件名: launcher.exe
提取路径: E:\WeGameApps\rail_apps\无畏契约(2001715)\WeGameLauncher
是否是有效路径(文件夹): True
是否是有效路径(文件夹): False
是否是有效文件: True'''

四、总结

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

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

相关文章

redis整合

一.redis的发布订阅 什么 是发布和订阅 Redis 发布订阅 (pub/sub) 是一种消息通信模式&#xff1a;发送者 (pub) 发送消息&#xff0c;订阅者 (sub) 接收消息。 Redis 客户端可以订阅任意数量的频道。 1、Redis的发布和订阅 客户端订阅频道发布的消息 频道发布消息 订阅者就可以…

matlab绘图杂谈-stem函数和plot函数

出发点 今天在论文中看到一副这样的图&#xff0c;它既有曲线&#xff0c;又有点&#xff0c;并且对两者都添加了图例。三条曲线应该是用plot函数绘制的&#xff0c;而target哪个绿色的圆圈&#xff0c;我的理解是用stem函数绘制的。它只是1个点&#xff0c;并且没有竖线&…

Linux文件管理技术实践

shell shell的种类(了解) shell是用于和Linux内核进行交互的一个程序&#xff0c;他的功能和window系统下的cmd是一样的。而且shell的种类也有很多常见的有c shell、bash shell、Korn shell等等。而本文就是使用Linux最常见的bash shell对Linux常见指令展开探讨。 内置shell…

ElasticSearch搜索引擎入门到精通

ES 是基于 Lucene 的全文检索引擎,它会对数据进行分词后保存索引,擅长管理大量的数据,相对于 MySQL 来说不擅长经常更新数据及关联查询。这篇文章就是为了进一步了解一下它,到底是如何做到这么高效的查询的。 在学习其他数据库的时候我们知道索引是一个数据库系统极其重要…

【基础配置】Python2/Python3并存安装配置教程

Nx01 产品简介 Python是一种高级的、解释型的、面向对象的通用编程语言&#xff0c;具有简单易学、代码可读性强、功能强大、可移植性好等特点。它可以应用于多种领域&#xff0c;如Web开发、数据科学、人工智能、机器学习、科学计算、自动化测试等。Python由Guido van Rossum于…

如何使用phpStudy软件测试本地PHP及环境搭建

各位同学朋友们大家好&#xff01;我是咕噜铁蛋&#xff01;我们经常需要在本地进行PHP代码的开发和测试。而phpStudy作为一个集成了Apache、MySQL和PHP的软件套装&#xff0c;提供了方便快捷的环境搭建和测试工具。今天铁蛋为大家详细介绍如何使用phpStudy来测试本地PHP及环境…

雨云服务器部署幻兽帕鲁PalWorld联机服务器详细教程

幻兽帕鲁是Pocketpair开发的一款开放世界生存制作游戏&#xff0c;游戏中&#xff0c;玩家可以在广阔的世界中收集神奇的生物“帕鲁”&#xff0c;派他们进行战斗、建造、做农活&#xff0c;工业生产等。 最近&#xff0c;这款游戏挺火&#xff0c;为了获得更好的游戏体验&…

Vue构建项目断点调试过程问题总结

Vue构建项目断点调试过程问题总结 问题背景 前端开发过程中&#xff0c;碰到问题时需要debug&#xff0c;快速分析和解决问题。一般除了console.log的方式打印日志外&#xff0c;更方便直观的方式就是打断点debug。本文对vue项目debug过程可能碰到的问题进行总结&#xff0c;…

“数据同步大揭秘:Canal工具如何让实时处理变得轻而易举?“

介绍&#xff1a;Canal是一个基于MySQL数据库增量日志解析的开源数据同步工具。 Canal的主要功能是提供增量数据订阅和消费&#xff0c;它通过解析MySQL数据库的增量日志来捕获数据变更事件&#xff0c;并将这些事件转换成数据变更流&#xff0c;供用户订阅和消费。这样&#x…

Deepin基本环境查看(四)【硬盘/分区、文件系统、硬连接/软连接】

Linux操作系统(Deepin、Ubuntu&#xff09;操作系统中&#xff0c;硬盘分区的管理与Windows操作系统不同&#xff1b; 在Linux系统中维护着一个统一的文件目录体系&#xff0c;而硬盘和分区是以资源的形式由操作系统挂接和调度&#xff1b;此外Linux系统中连接&#xff08;硬连…

NTFS 磁盘管理 :NTFS Disk by Omi NTFS

NTFS Disk by Omi NTFS是一款专为Mac系统设计的NTFS文件系统读写解决方案的工具。它可以帮助Mac用户方便地访问和管理NTFS格式的硬盘、U盘、移动硬盘以及其他存储设备&#xff0c;提供高效稳定的NTFS卷管理功能。 NTFS 磁盘管理 &#xff1a;NTFS Disk by Omi NTFS 该软件的主…

Mistral AI vs. Meta:顶级开源LLM比较

为了提高性能&#xff0c;大型语言模型(llm)通常会通过增加模型大小的方法来实现这个目标&#xff0c;但是模型大小的增加也增加了计算成本和推理延迟&#xff0c;增加了在实际场景中部署和使用llm的障碍。 Mistral AI是一家总部位于巴黎的欧洲公司&#xff0c;一直在研究如何…

QT入门篇---无门槛学习

1.1 什么是 Qt Qt 是⼀个 跨平台的 C 图形⽤⼾界⾯应⽤程序框架 。它为应⽤程序开发者提供了建⽴艺术级图形界⾯所需的所有功能。它是完全⾯向对象的&#xff0c;很容易扩展。Qt 为开发者提供了⼀种基于组件的开发模式&#xff0c;开发者可以通过简单的拖拽和组合来实现复杂的…

车险到期提醒,快速查询交强险投保日期!

随着社会的进步和人们生活水平的提高&#xff0c;车辆已经成为人们出行的重要工具。而为了保障行车安全&#xff0c;车辆保险成为了必备的选择。交强险作为一种强制性的保险&#xff0c;其投保期限对车主来说尤为重要。本文将通过介绍一个API接口&#xff0c;帮助车主们快速查询…

图中点的层次——树与图的广度优先遍历

问题描述 代码实现 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 1e5 10;int n, m; int h[N], ne[N * 2], e[N * 2], idx; int d[N]; // 从节点1到当前节点的距离 int q[N * 2]; // 数组模拟队列void ad…

01-echarts如何绘制三维折线图

echarts如何绘制三维折线图 一、相关依赖包1、下载依赖2、引入依赖 二、创建图表盒子1、创建盒子2、定义数据3、编写方法1、初始化盒子2、设置配置项3、修改数据格式4、设置颜色数组4、设置name数组5、设置线三维和点三维6、添加配置项7、设置图表自适应 4、调用方法 三、整体代…

Unity 面试篇|(三)设计模式篇 【全面总结 | 持续更新 | 建议收藏】

目录 1. 什么是设计模式&#xff1f;2. 设计模式的七大原则&#xff1f;3. 单例模式4. 三类设计模式5. 什么是单例模式&#xff0c;适用场景以及优缺点&#xff1f;6. 什么是原型模式&#xff0c;适用场景以及优缺点&#xff1f;7. 什么是生成器模式&#xff0c;适用场景以及优…

力扣经典题:链表合并

解决链表合并问题需要有特定的思路&#xff1a; 、链表合并 王赫辰/c语言 - Gitee.com 简述思路&#xff1a;首先先处理特殊情况&#xff0c;将空指针时的情况进行提前处理 然后再创建新的链表&#xff0c;此时使用尾插比较法&#xff1a; 循环条件&#xff1a;当两个链表中…

甲基四嗪-PEG5-炔烃,Methyltetrazine-PEG5-alkyne,可以提高生物分子的稳定性和保存期

您好&#xff0c;欢迎来到新研之家 文章关键词&#xff1a;甲基四嗪五聚乙二醇炔&#xff0c;甲基四嗪-PEG5-炔烃&#xff0c;Methyltetrazine-PEG5-alkyne 一、基本信息 产品简介&#xff1a;Methyltetrazine PEG5 alkyne contains methyltetrazole and PEG5 chains, as we…

pyecharts模块的下载方法以及介绍,折线图的创立

目录 1.pyecharts是什么 2.pyecharts下载方法 1.在屏幕左下角搜索这里输入cmd&#xff0c;找到命令提示符并且打开 2.输入pip install pyecharts 然后回车进行下载 3.检查是否下载完成 4.另一个方法 3.pyecharts入门 4.pyecharts的配置选项 set_global_opts全局配置选…