Python知识点12---Python的I/O操作

提前说一点:如果你是专注于Python开发,那么本系列知识点只是带你入个门再详细的开发点就要去看其他资料了,而如果你和作者一样只是操作其他技术的Python API那就足够了。

Python的流(I/O)操作,最简单的其实就是输入和输出,输出我们都知道使用输出函数

print( str , end = '\n')

但是Python的输入却有两个方法,一个是我们最常用的 input,但是其实Python还有一个raw_input函数也可以输入,那么它们的区别在哪里呢?

raw_input([prompt]) 	从标准输入读取一个行,就是键盘输入的数据,并返回一个字符串(去掉结尾的换行符),prompt 是提示语句例如:str = raw_input("请输入:")print "你输入的内容是: ", str
结果:请输入:Hello Python!你输入的内容是:  Hello Python!

但是input,这个函数除了支持raw_input同样的功能之外,它还有一个特别的特点,它可以识别输入数据中的Python代码

str = input("请输入:")
print "你输入的内容是: ", str例如:输入:[x*5 for x in range(2,10,2)]
结果:你输入的内容是:  [10, 20, 30, 40]

再向深层次学习流操作,那就要说说Python和其他语言一样都有的操作文件API,且Python的文件API更加简洁
open(name,mode,buffering)		name是文件路径,mode是访问模式,该方法会返回一个文件对象,buffering是一个寄存区,也就是字符缓冲区的标识,如果 buffering 的值被设为 0,文件就不会被缓存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认

mode模式支持如下的参数,常用的也就读写而已
在这里插入图片描述
在这里插入图片描述
在菜鸟教程里面罗列了常用的几个模式,并且使用图例的方式进行直白的解释
在这里插入图片描述
以及提供了下面这个表格,解释了常用的几个模式,可以实现哪些功能
在这里插入图片描述
同时你可以知道根据open方法返回的对象,获得如下信息
在这里插入图片描述

fo = open("foo.txt", "w")
print "文件名: ", fo.name
print "是否已关闭 : ", fo.closed
print "访问模式 : ", fo.mode
print "末尾是否强制加空格 : ", fo.softspace

在打开一个文件,并使用结束后,一定要记住关闭它,不然你的内存会被大量占用

文件对象.close()

在调用了关闭流的方法后,Python会刷新缓存区里面的内容到文件中,之后就不能再操作写入了


Pythond的文件对象还提供了,许多其他方法用来操作文件,比如写方法

文件对象.write(str)	

操作写入方法的时候,要注意,流中的 str 不一定必须是字符串,可以是二进制数据,且该方法不会自动增加换行符号

# 打开一个文件
fo = open("foo.txt", "w")
fo.write( "www.runoob.com!\nVery good site!\n")# 关闭打开的文件
fo.close()在文件中会有如下内容:
www.runoob.com!
Very good site!

文件对象还提供了,读取内容的方法,read()

文件对象.read(num)	读取文件,num是字节个数,不写时读取所有内容# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "读取的字符串是 : ", str
# 关闭打开的文件
fo.close()读取的字符串是 :  www.runoob

当然还有readline方法可以读取一行,在你要读取的文件很大的时候,就不在适合使用read了,且readline返回的字符串中包含换行符

file = open('foo.txt', 'r' )while True:text_line = file.readline()if text_line:print(text_line)else:break

readline函数还可以传入一个参数,和read的num一样意义的参数,控制读取的字节大小,不过一般不用,毕竟只读取一行数据

当然Python还有一个readlines函数,它的使用有些风险,因为它读取的也是整个文件,不过他的返回结果是一个列表,把每一行数据包含换行符作为列表的每一个元素

文件内容:
1:www.runoob.com
2:www.runoob.com
3:www.runoob.com
4:www.runoob.com
5:www.runoob.comfo = open("runoob.txt", "r")
print "文件名为: ", fo.namefor line in fo.readlines():                          #依次读取每行  line = line.strip()                             #去掉每行头尾空白  print "读取的数据为: %s" % (line)# 关闭文件
fo.close()

说了读取方法就不得不说,文件定位了,也就是光标读取文件时的位置

tell()方法告诉你文件内的当前位置, 换句话说,下一次的读写会发生在文件开头这么多字节之后。

seek(offset [,from])方法改变当前文件的位置。offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print "读取的字符串是 : ", str# 查找当前位置
position = fo.tell()
print "当前文件位置 : ", position# 把指针再次重新定位到文件开头
position = fo.seek(0, 0)
str = fo.read(10)
print "重新读取字符串 : ", str
# 关闭打开的文件
fo.close()结果:
读取的字符串是 :  www.runoob
当前文件位置 :  10
重新读取字符串 :  www.runoob

文件除了读写,最基本的还有重命名与删除

import os , shutil
os.rename(current_file_name, new_file_name)		重命名方法的两个参数,分别是带文件名的新旧路径os.remove(file_name)		删除一个文件shutil.move()	移动文件

当然 我们导入的 os 模块还有着相当多实用的方法

os.mkdir(newdir)		建立一个新的目录,注意该方法只能新建目录,想新建文件可以考虑open方法os.chdir(newdir)		这个方法用来设置当前程序操作的当前路径,用的比较少os.getcwd()		该方法用来显示当前路径,对于Python程序来说叫做当前工作目录os.rmdir(dirname)		该方法用来删除一个目录,但是注意删除一个目录前,它的子数据应该是被删除的os.listdir(目录)		获取目录下的所有文件名shutil模块:是python内置的高级的文件、文件夹、压缩包处理模块shutil.copyfile(src,dst) 
将src复制到dst中去,dst一定要具有读写权限,如果dst已经存在会被覆盖,src和dst必须是文件,不可以是目录。shutil.move(src,dst)
移动文件、目录。或者文件、目录重命名,如果dst存在,则不可覆盖。shutil.copt(src,dst)
复制一个文件到一个文件或一个目录,src必须是文件,dst是文件或者目录shutil.copy2(src,dst)
在copy的基础上再复制文件最后访问时间和修改时间也复制过来,但是创建时间是不会和源文件一样的。shutil.copytree(olddir,newdir,True/False)
把olddir拷贝一份newdir,如果第三个参数是True,则复制目录时将保持文件夹下的符号链接,如果地3个参数时False,则将在复制的目录下生成物理副本来代替符号连接

文件对象和我们上面导入的 os 模块相互配合可以实现很多操作,用到时具体的大家可以在网上找找,推荐大家可以看看菜鸟教程的, 文件对象API --------- os 对象API

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

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

相关文章

工厂的精益生产如此重要

什么是工厂的精益生产 精益生产(Lean Manufacturing)是一种起源于20世纪50年代日本丰田汽车公司的生产管理哲学。它的核心理念是通过消除生产过程中的浪费,优化流程,提高效率,从而实现成本降低和质量提升。精益生产不仅…

VRTK4.0学习——(二)

手柄绑定以及显示 1.导入CameraRigs.UnityXRPluginFramework 和 CameraRigs.TrackedAlias 预设,将CameraRigs.UnityXRPluginFramework拖入CameraRigs.TrackedAlias的Elements中即可,运行软件后即可看到手柄了 注:如果无法看到手柄&#xff…

MySQL:MySQL执行一条SQL查询语句的执行过程

当多个客户端同时连接到MySQL,用SQL语句去增删改查数据,针对查询场景,MySQL要保证尽可能快地返回客户端结果。 了解了这些需求场景,我们可能会对MySQL进行如下设计: 其中,连接器管理客户端的连接,负责管理连接、认证鉴权等;查询缓存则是为了加速查询,命中则直接返回结…

系统介绍在线直线度测量仪的测量原理

测头的测量原理 蓝鹏光电测头采用的是CCD成像法测量,CCD成像法是指将被测物放置在物方远心光路系统中进行成像,并利用成像位置的CCD芯片接收成像信息进行尺寸测量的方法。该测量方法的优点主要有两个:一是成像边界清晰,光电信号可…

从墙的功能出发 -分析欧特克Revit和广联达数维的差别

欧特克(Autodesk)在三维建模软件领域的影响力是有目共睹的,它是行业的头部产商,拥有众多的高质量的三维设计软件,涵盖了建筑设计、机械设计与制造和电影文娱行业。Revit是其发布的建筑三维建模软件,也是BIM…

如何用个人电脑搭建一台本地服务器,并部署项目到服务器详细教程(Ubuntu镜像)

前言 VirtualBox虚拟机软件是一款强大、免费且开源的虚拟化工具,它允许用户在单一物理机器上同时运行多个操作系统。他对比VMware就是更轻量级的虚拟机软件,而且操作更简单。 下载地址:Download_Old_Builds_7_0 – Oracle VM VirtualBox …

SpringMVC日期格式处理 分页条件查询

实现日期格式处理 实现分页条件查询: 分页条件查询 和 查询所有 是两个不同的方法,使用同一个mapper的查询功能,但是两个不同的业务方法 ​​​​​​​

24年西藏事业单位报名详细流程

✨各位姐妹们注意啦!24西藏事业单位公告已出,本次计划公开招聘8⃣9⃣9⃣人即日起开始报名,想要上岸的姐妹们要抓紧了哦✊趁着还有时间赶紧开卷!!! 🌈24西藏事业单位招聘考试: &…

k8s练习--StorageClass详细解释与应用

文章目录 前言StorageClass是什么 一、实验目的配置过程 二、实验环境实验步骤一、配置网络存储NFS:1.主机基础配置2.配置 NFS: 二、开启rbac权限:三、创建nfs-deployment.yaml四、创建storageclass资源五、验证:1.创建PVC验证2.创建一个pod验…

C++青少年简明教程:数组

C青少年简明教程:数组 C数组是一种存储固定大小连续元素的数据结构。数组中的每个元素都有一个索引,通过索引可以访问或修改数组中的元素。 在C中,数组中的元素数据类型必须一致。数组是一个连续的内存区域,用于存储相同类型的元…

期权懂带你懂50etf认沽期权和认购期权有什么区别?

今天带你了解期权懂带你懂50etf认沽期权和认购期权有什么区别?在金融市场中,期权是一种允许持有者在未来某个时间以特定价格买入或卖出基础资产的金融衍生品。 50etf认沽期权和认购期权有什么区别? 50ETF认沽期权和认购期权的主要区别在于它…

聚类算法—DBSCAN算法

文章目录 DBSCAN算法基本概念1个核心思想:基于密度2个算法参数:邻域半径R和最少点数目minpoints3种点的类别:核心点,边界点和噪声点4种点的关系:密度直达,密度可达,密度相连,非密度相…

Spi Pwm Tim 对比分析

spi SPI时序图 (spi是主从机 所以主机需要从机数据 需要主极先喊从机 把从机喊答应了 才能开始读从机的数据) cpol时钟极性 和cpha时钟相位分析 1.cpha为高,cpol为高,则偶数上升沿有效 2.cpha为高,cpol为低,则偶数…

JVM之【GC-垃圾清除算法】

Java虚拟机(JVM)中的垃圾收集算法主要分为以下几种: 标记-清除算法(Mark-Sweep)复制算法(Copying)标记-整理算法(Mark-Compact)分代收集算法(Generational C…

vue3+three.js给glb模型设置视频贴图

1.在网上下载一个显示屏或者自己画一个,在blender中设置好显示屏的Mesh,UV设置好,这样方便代码中添加纹理贴图。可以让美术在建模软件中,先随机设置一张图片作为纹理,验证UV是否设置好 关于如何 在blender中给模型设置UV贴图百度很多的 // 视频 import * as THREE from…

MacOS13-将数据库转为markdown,docx格式

MacOS13-将数据库转为markdown,docx格式 文章目录 先说踩坑点各种模块缺失 代码效果总结参考 先说踩坑点 各种模块缺失 tkinter mysql 没错,你可以直接点击安装; 如果还出现报错 你需要打开终端 pip install mysqlclient再次点进去安…

xcode开发swift允许发送http请求设置

Xcode 现在新建项目默认只支持HTTPS请求,认为HTTP请求不安全,所以不支持。但是开发环境一般都是http模式,所以需要单独配置才可以访问。 需要到项目的设置里面,点击info,如果没有App Transport Security Setting这一项…

项目优化方案之---实现邮箱用户登录

之前的项目中我写的基于SpringBoot和Vue的全栈项目已经实现了基本的用户接口开发, 不过其代码的功能单一,而且写的也是有不少漏洞(基本就像刚接手的代码*山一样) 那之后的几篇文章都来分享一下如何优化项目(每一章都独…

JMeter性能测试实现与分析分享

JMeter是由著名开源软件巨头Apache组织开发的纯Java的压力测试工具,它即能测试动态服务(WebService),也能测试静态资源,包括Servlet服务、CGI脚本等,还能测试动态语言服务(PHP、Java、ASP.NET等…

JVM学习-监控工具(二)

jmap:导出内存映像文件&内存使用情况 基本情况 jmap(JVM Memory Map):一方法获取dump文件(堆转储快照文件,二进制文件),还可以获取目标Java进程的内存相关信息,包括Java堆各区域的使用情况、堆中对象的统计信息、…