python中file是什么意思中文_15_【Python学习分享文章】_file(文件)及其操作
综述
- file(文件)的含义
Python 中的 file 不止使用 PC 时所说的单个文件,比如 .txt、.exe 等这类文件,也包括“打开一个网址”、程序间的通信数据等,都抽象成 file 的概念。
- 好处
所有的这些数据处理,可以通过一套相同的操作函数进行,简化文件操作逻辑,降低了学习难度。
具体内容
- 基本读写操作
以下是 Python 自带的文件操作函数(即“内建函数”):open()
打开文件。如果没有文件,就会新建这个文件。
read()
读取,官方:输入。输入到编写的程序里面
readline()
输入一行
seek()
文件内移动(光标操作位置)
write()
写入,官方;输出。输出到其他文件中。
close()
关闭文件。一定要进行的操作,否则文件是“非保存”状态,关机操作会丢失数据。
- 【写入文件】的 demo 说明
整体逻辑:
open() --> write() --> close()
打开 --> 写入内容 --> 保存关闭文件
目标:
记录常见的“英文名字”。
【说明:】不采用中文,是因为中文的字符不是统一的,一个汉字是两个字符位,而标点是一个字符位,不容易理解。
打开(新建)文件:
使用 open() 函数。
# 记录常见的英文名字到 txt 文件中
file_names = open('enNames.txt','w') # 需要添加‘’,说明为 操作标记,否则被认为是 变量
print("file_names 的文件 type 是:")
print(type(file_names))
file_names 的文件 type 是:
过程解释:
最完整(冗杂)版本:
open('enName.txt', mode = 'w')
简略(省略的)版本:
file 为第一个参数,mode 为第二个参数,不写参数名字,就默认按照参数顺序排列
open('enName.txt', 'w')
file 赋值给一个变量,使用变量操作文件:
file_names = open('enName.txt','w')
“完整”的参数说明:
open(file, mode, buffering, encoding, errors, newline, ...)
参数名字解释:
open(file 是处理的文件名字,需要为 str 数据类型,只有这个是必填项(不然干嘛还用这个函数呢);mode 是处理文件的模式,有 'r'(read 只读模式,不能修改里面的数据)、'w'(write 写入模式,清空内容写入)、'a'(不清楚原有内容的写入),不输入就用默认的 r 模式;buffering 后面这些暂时不需要用到,放过)
向 file 内写入内容:
使用 write 函数。
# 向 file_names 文件内写入 “John” 这个名字,string 类型的。
file_names.write('John')
4
关闭、保存文件:
使用 close() 函数。
file_names.close()
- 【读取文件】的 demo 说明
整体逻辑:
open() --> read() --> close()
打开 --> 读取内容 --> 保存关闭文件
目标:
读取到文件内容,并进行打印输出。
code:
# 打开需要操作的文件,赋值给一个变量以便操作
file_2 = open('enNames.txt') # 默认是 r 模式,所以不用书写
# 读取 file_2 内容,也就是 file_names.txt 的内容
# file_2.read()
# 对读取的内容进行输出打印:
print('file_names.txt 的内容是:')
print(file_2.read())
# 关闭保存文件
file_2.close()
file_names.txt 的内容是:
John
- 【增加内容】的 demo 说明
目标1:
在文件原有的内容上增加内容。
code:
# 增加写入 ‘Bob’ 名字
file_3 = open('enNames.txt','a')
file_3.write('Bob')
file_3.close()
# 需要重新定义变量进行查看,原来的模式为 write,是 unreadable 状态
file_4 = open('enNames.txt')
print("新增内容后的全部内容是:")
print(file_4.read())
file_4.close()
新增内容后的全部内容是:
JohnBob
目标2:
增加的内容在新的一行上。
code:
file_5 = open('enNames.txt', 'w')
file_5.write('John\n')
file_5.write('Bob\n')
file_5.write('Jack\n')
file_5.write('Rose\n')
file_5.close()
file_6 = open('enNames.txt')
print("具有多行 string 的内容是:")
print(file_6.read())
file_6.close()
具有多行 string 的内容是:
John
Bob
Jack
Rose
- 【逐行读取】的 demo 说明
目标1:
逐行读取内容,以 string 类型的数据为例子。
code:
file_7 = open('enNames.txt')
print('一行的内容是:')
print(file_7.readline())
print('下一行的内容是:')
print(file_7.readline())
file_7.close()
一行的内容是:
John
下一行的内容是:
Bob
目标2:
批量逐行读取内容,用到 for 函数。
code:
file_8 = open('enNames.txt')
for line in file_8.readlines():
print('这行的内容是:'+line)
print('=*=*=*=')
file_8.close()
这行的内容是:John
=*=*=*=
这行的内容是:Bob
=*=*=*=
这行的内容是:Jack
=*=*=*=
这行的内容是:Rose
=*=*=*=
- 定位指针指定位置
【指针】:可以简单理解为我们进行 word 编辑的时候的那个“光标”,位置和 sequence 的下标一样,用数字表示。对应的“函数”是 tell() 。
目标1:
获得指针位置信息。
code:
file_9 = open('enNames.txt', 'rb') # 需要增加 b 字符,才能在后面进行相对偏移的操作,否则没有权限。
print('初始指针位置(应该是 0):')
print(file_9.tell())
print("读取3个字符,内容是:")
print(file_9.read(3)) # read()默认是读取全部内容,增加的数字是指定读取的字符数量。
print("现在的指针位置是:")
print(file_9.tell())
print('再读取4个字符,内容是(我不知道换行符是不是算一个字符):')
print(file_9.read(4))
print("处理两次后,当前的指针位置:")
print(file_9.tell())
初始指针位置(应该是 0):
0
读取3个字符,内容是:
b'Joh'
现在的指针位置是:
3
再读取4个字符,内容是(我不知道换行符是不是算一个字符):
b'n\r\nB'
处理两次后,当前的指针位置:
7
mode = 'r'的情况
【分析:】为什么最后是8,不应该是3+4=7的么?【猜想:】应该是换行符有点特别吧。
mode = 'rb的情况
【分析:】打印的内容为什么出现b''字样?【基本猜测:】b 的意思是 binary mode,即 二级制,需要进行提醒。
目标2:
将指针返回到文件开头。使用的是 seek() 函数。
code:
print("我们进行了 seek() 的操作,seek(0)")
file_9.seek(0) # 输入的数字是定位的位置的数字标记。
print("当前的指针位置是:")
print(file_9.tell())
print("重新定位指针后,读取的两个字符内容是:")
print(file_9.read(2))
print("读取完成后,当前的指针位置是:")
print(file_9.tell())
我们进行了 seek() 的操作,seek(0)
当前的指针位置是:
0
重新定位指针后,读取的两个字符内容是:
b'Jo'
读取完成后,当前的指针位置是:
2
目标3:
在当前位置相对移动指针。
code:
接着上面,指针已经在 2 位置处。
print("当前位置偏移4个字符的 seek() 操作")
file_9.seek(4, 1)
print("当前的指针位置是:%s"%file_9.tell())
print("读取2个字符,内容是:%s"%file_9.read(2))
print("从文件开头位置偏移3个字符的 seek() 操作")
file_9.seek(3, 0)
print("当前的指针位置是:%s"%file_9.tell())
print("读取2个字符,内容是:%s"%file_9.read(2))
print("从文件结尾位置偏移3个字符的 seek() 操作")
file_9.seek(-3, 2)
print("当前的指针位置是:%s"%file_9.tell())
print("读取2个字符,内容是:%s"%file_9.read(2))
file_9.close()
当前位置偏移4个字符的 seek() 操作
当前的指针位置是:6
读取2个字符,内容是:b'Bo'
从文件开头位置偏移3个字符的 seek() 操作
当前的指针位置是:3
读取2个字符,内容是:b'n\r'
从文件结尾位置偏移3个字符的 seek() 操作
当前的指针位置是:20
读取2个字符,内容是:b'e\r'
【参数说明:】
seek
注:
个人微信公众号:codeAndWrite
python中file是什么意思中文_15_【Python学习分享文章】_file(文件)及其操作相关推荐
- Python中使用Turtle绘制阴阳鱼(小白的学习分享)
Python中使用Turtle绘制阴阳鱼(小白的学习分享) 五一在家无聊,小白第一次学习绘制阴阳鱼,代码如下,请各位大神指点: #作者:Guangxu #功能:阴阳鱼的绘制 #版本:V1.0 #日期: ...
- python中shell是什么意思中文翻译-python shell是什么东西
python shell是Python的命令行. shell中最常用的是ls命令,python对应的写法是:os.listdir(dirname),这个函数返回字符串列表,里面是所有的文件名,不过不包 ...
- python中file方法
文章目录 一.python中file方法 总结 一.python中file方法 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象. 在对文件进行处理过程都需要使用到 ...
- eval在python中是什么意思_如何在Python中使用eval ?
Python中的 eval是什么? 在Python中,我们有许多内置方法,这些方法对于使Python成为所有人的便捷语言至关重要,而eval是其中一种.eval函数的语法如下: eval(expres ...
- python中if语句缺省else_9_【Python学习分享文章】_if(条件语句)
[Python学习分享文章]_if(条件语句)_logicalJudgement介绍及基本操作 综述 计算机的"条件语句"和生活中的"条件成立"是不一样的. 一 ...
- [转载] python中的且语句_简单探讨python中的语句和语法
参考链接: 在Python中解包:并行分配之外 python程序结构 python"一切皆对象",这是接触python听到最多的总结了.在python中最基层的单位应该就是对象了, ...
- python中二进制和文本不同_关于Python字符编码与二进制不得不说的一些事
二进制 核心思想: 冯诺依曼 + 图灵机 电如何表示状态,才能稳定? 计算机开始设计的时候并不是考虑简单,而是考虑能自动完成任务与结果的可靠性, 简单始终是建立再稳定.可靠基础上 经过尝试10进制,但 ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- python中for语句的使用_对Python中for复合语句的使用示例讲解
当Python中用到双重for循环设计的时候我一般会使用循环的嵌套,但是在Python中其实还存在另一种技巧--for复合语句. 简单写一个小程序,用于延时循环嵌套功能如下: #!/usr/bin/p ...
最新文章
- Metadata Service 架构详解 - 每天5分钟玩转 OpenStack(165)
- 如何写优雅的SQL原生语句?
- DELL OME监控服务器安装配置
- reentrantlock非公平锁不会随机挂起线程?_【原创】Java并发编程系列16 | 公平锁与非公平锁...
- React Hooks的使用(一)——useState、useEffect解析
- 算法竞赛入门经典 第七章 总结
- mysql 5.1.3_1.1.1 MySQL5.5默认存储引擎的调整(3)
- Linux电源管理(1)_整体架构
- boost::algorithm学习
- unas 下 Transmission 下载使用体会
- winform程序:newtonsoft json 序列化时出现 “unterminated string. Excepted delimiter...
- AngularJs参数传递
- python3制作中文词云_Python_制作中文词云
- [生活] 领带的打法
- Java 集合转数组的toArray()和toArray(T[] a)方法通俗易懂
- Linux系统安装make命令(错误提醒:Failed to search for file: Cannot update read-only repo)
- 手机APP(功能)测试重点
- 【独家】MobaXterm v22.1 全能终端连接工具中文版最新版
- 键盘上什么组合键表示热启动计算机,什么是电脑热启动?电脑怎么热启动
- EDG刷屏、花椒沉寂,“初老”花房如何闯关IPO?
热门文章
- python计算两组数据的相关性_python-计算数据的相关性
- 修复u盘:文件或目录损坏且无法读取
- 魔百和 机顶盒 UNT401H_IPTV刷机 亲测成功!
- 985大学改考408!复旦大学软件工程专硕
- 【小算法】二分图匹配之匈牙利算法详解(图例说明,代码亲测可用)
- 想涨工资,工作两年如何跳槽到大厂?月薪直涨10K
- Efficient Zero-Knowledge Argument for Correctness of a Shuffle学习笔记(3)
- Object 类型转化为 BigDecimal 类型
- java hh24miss_时间日期转换工具类,获取当前时间YYYYMMDD24HHMISS、YYYYMMDDHHMISS
- 总结1-mysql—JDBC-Servlet