趣玩目录
- 文本文件操作
*
– - 例题1:
– - 例题2:
– - 文件操作基本知识
* - 内置函数open()
- 文件对象常用方法
- 上下文管理语句with
- 趣编程
* - 实现秒表功能(代码如下):
– - 总结:
–
文本文件操作
文件自行准备:
主要方法懂了就行,文不文件的内容先别太重视
; 例题1:
遍历文件data.txt中的所有行,统计每一行中字符的个数
相关程序代码如下:
with open('data.txt') as f:
g1, g2 = [], []
for l in f:
g1.append(len(l))
g2.append(len(l.strip()))
data = [str(s)+'\t' for s in g2]
print(g1)
print(g2)
with open('data2.txt', 'w') as f2:
f2.writelines(data)
运行结果如下:
; 写入的文件内容如下:
例题2:
随机产生一个数据矩阵,把它存入具有不同分隔符格式的文本文件中,再把数据从文本文件中提前出来
相关程序代码如下:
import numpy as np
lxw = np.random.rand(6, 8)
np.savetxt('data3.txt', lxw)
np.savetxt('data4.csv', lxw, delimiter=',')
b = np.loadtxt('data3.txt')
c = np.loadtxt('data4.csv', delimiter=',')
因为是随机的嘛,里面的值每运行一次,都会变化的,在这里,只作个大慨参考即可
data3.txt文件展示:
; data4.txt文件展示:
文件操作基本知识
不管是文本文件还是二进制文件,其操作流程基本都是一致的。
- 打开文件并创建文件对象
- 通过该文件对象对文件进行读取、写入、删除和修改等操作
- 关闭并保存文件内容
内置函数open()
Python内置函数 open()
可以指定模式打开指定文件并创建文件对象,该函数的 完整用法
如下:
open(file, mode=’r’, buffering=-1, encoding=None, errors=None,
newline=None, closefd=True, opener=None)内置函数open()的主要参数如下:
file 指定要打开或创建的文件名称【如若该文件不在当前目录中,可以使用相对路径或绝对路径】
mode 指定打开文件的处理方式【下面会讲到】
encoding 指定对文本进行编码和解码的方式,只适用于文本模式【可使用Python支持的任何格式,如GBK、UTF-8等等】
'''
文件打开模式
模式 说明
r 读模式(默认模式,可省略)【若文件不存在则抛出异常】
w 写模式【若文件已存在,会清空原有内容】
x 写模式,创建新文件【若文件已存在则抛出异常】
a 追加模式【不覆盖文件中原有内容】
b 二进制模式(可与其他模式组合使用),使用二进制模式打开文件时
不允许指定encoding参数
t 文本模式(默认模式,可省略)
+ 读、写模式(可与其他模式组合使用)
'''
文件对象常用方法
'''
若执行正常,open()函数返回一个可迭代的文件对象,通过该文件对象
可以对文件进行读写操作【文件对象常用方法如下】
文件对象常用方法
方法 功能说明
close() 把缓冲区的内容写入文件,同时关闭文件,并释放文件对象
read([size]) 从文本文件中读取size个字符作为结果返回,或从二进制文件中
读取数量的字节并返回【若省略size则表示读取所有内容】
readline() 从文本文件中读取一行内容作为结果返回
readlines() 把文本文件中的每行文本作为一个字符串存入列表中,返回该列表
【对于大文件会占用较多内存,不建议使用】
writes 把字符串s的内容写入文件
writelines 把字符串列表写入文本文件,不添加换行符
tell 返回文件指针的当前位置
'''
上下文管理语句with
在实际应用中,读写文件应优先考虑使用上下文管理语句with,关键字with可以
自动管理资源
,
确保不管使用过程中是否发生异常都会执行必要的”清理”操作,释放资源,比如
文件使用后自动关闭。
with
语句的用法如下:
with open(filename, mode, encoding) as f:
# 通过文件对象f读写文件内容
趣编程
实现秒表功能(代码如下):
import time
print('按下回车开始计时,按下ctrl + C停止计时:')
while True:
input("")
starttime = time.time()
print('开始')
try:
while True:
print('计时:',round(time.time()-starttime, 0), '秒', end="\r")
time.sleep(1)
except KeyboardInterrupt:
print('结束')
endtime = time.time()
print('总共的时间为:', round(endtime - starttime, 2), 'secs')
break
运行结果如下:
; 总结:
忘不了孙中山原配一句,我总不能阻止她奔向比我更好的人吧,下一句是,可我就是觉得除了我谁都配不上她!时间还是蛮快的,一转眼,培训就要结束啦,虽学的不是很多,不过学了个大慨,很多事终归还是要靠自己!!继续加油吧,骚年!!!
每日一言:
将来会怎么样,我根本不会考虑。要是成天想着今天,愁着明天,生活还有什么意思呢?就是事情遭到无可再遭的地步,我想总还是有路可走的。
Original: https://blog.csdn.net/m0_66318554/article/details/125066841
Author: lxw-pro
Title: 【数模之文本文件操作】
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/758621/
转载文章受原作者版权保护。转载请注明原作者出处!