项目中涉及到的Python小技巧(1)——保存数据到TXT


由于现在原创的文章不够15篇,不够开专栏,所以只能这样来写。以后希望能开一些专栏,权当是对博客进行分类,方便寻找,也希望能当做一种笔记,把项目中使用到的一些方法技巧记录下来,免得以后想不起来了,还得到处查。当然,虽然号称是小技巧,但可能其中会存在这些许问题,只希望能对大家提供到一点帮助就好。好了,闲白就说到这~

Python保存数据到.TXT文件

在项目中,难免有时候需要查看内部的某些变量的值,会内部处理的数据,由于博主使用的是Pycharm这种IDE,查看变量的功能本来就差(Pycharm这一点不如Spyder,但是自动补全功能确实好用,而且编译器的选择,对于我这种DL boy,要比Spyder友好),所以就需要能通过程序保存这些值,最简单的保存方式肯定是保存到.txt文件中了。

另外,插一句,查看.txt文件,推荐使用notepad++。其启动速度应该比VS code要快一点,可能界面没那么华丽,重在启动快,效率高。

1. 打开.txt文件

无论进行读写,都需要先打开txt文件。在Python中打开的方式分为两种。

第一种方式,直接利用内置open函数

file_txt = open('你的txt文件的路径', 'r', encoding='utf-8')
# 读取操作或者写入操作
file_txt.close()

第二种方式,使用codecs

import codecs
with codecs.open('你的txt文件的路径', mode='r', encoding='utf-8') as file_txt:
	# 读取或者写入操作

对比下上述的两种打开方式。第一种方式不太推荐,因为每次打开之后都需要自己进行关闭操作,第二种方式则不需要,除此之外,两者并无太大区别。

另外,需要注意两种打开方式中,后两个参数,mode与encoding。常用的三种mode为’r’、‘w’、‘a’,其中’r’为只读模式,只能进行读取,并不能写入;'w’为读写模式,但以这种模式写入数据会将之前txt文件中的数据或是文字,全部擦除,所以不太建议使用此种方式;'a’是接续写入,在不删除之前文本内容的前提下,写入数据。 而encoding则是编码方式,不用过多解释,看见’utf-8’就知道,是为了中文读写时不乱码。若使用notepad++查看写入到txt文件中的数据时,也需要吧编码格式调整成’utf-8’。

还有,txt文件的路径可使用绝对路径,也可使用相对路径。

2. 读取.txt文件

import codecs
with codecs.open('你的txt文件的路径', mode='r', encoding='utf-8') as file_txt:
	data = file_txt.read()            # 将txt文件的所有内容读入到字符串中
	data_line = file_txt.readlines()  # 直接将文件中按行读到list里

此处,不在进行效果演示。
上述两种读入的方式,在注释中也可以看到,读取出来的数据不是被存储到字符串格式的变量中,就是被存储到list的变量中,如果我们txt文件中存储的只有数字,直接利用numpy中读取txt文件的方法即可。

import numpy as np
data_array = np.loadtxt('你的txt文件路径')

这样读入的txt中的数据,将会存储到numpy.array形式的变量中。需要注意,这种情况要求txt文件中只能包含数字。

3. 写入.txt文件

import codecs
with codecs.open('你的txt文件的路径', mode='a', encoding='utf-8') as file_txt:
	for i in range(2):
		file_txt.write('\n' + str(9) + '\t' + str(8) + '\t' + str(7) + '\n')

需要注意,写入到txt文件中的数据只能是string格式的,因此无论是写入int或是float数的时候,都需要利用str()函数进行转换。另外,str()函数只能转换单一变量,也就是说,不能直接转换数组,解决办法就是循环写入整个数组。(我没找到更好的解决办法,欢迎提供更好的解决方案)。值得一提的是,不需事先创建此txt文件,如果txt文件不存在的话,函数会自动创建并保存。

上述代码中,’\n’ 的作用是换行,’\t’的作用在于前进一个制表符位,作用在于对齐。看下效果吧。


在这里插入图片描述
另外,如果不想循环写入,就想直接保存,在如果保存的数据就是numpy.array格式的,那么直接使用numpy内置函数即可。

import numpy as np
np.savetxt('保存的txt文件的路径')

但问题在于,此方法不能按照自己的想法,调整保存的样式,而且如果直接以这种方式直接保存,数据会以科学计数法显示,网上说利用下面这行代码就可解决,但博主在试过之后并不好用,因此一直在用第一种方法保存数据到txt文件中。

np.set_printoptions(suppress=True)

4. 清除.txt文件

当mode='a’时,然后使用write()函数时,并不会清除之前的文本数据,而当mode='w’时,只要打开一次,使用write()函数时,就会清除之前的文本数据。如何做到两全其美呢,让我在合适的时候清除文本数据呢?方法如下所示:

with codecs.open('你的txt路径', mode='w', encoding='utf-8') as file_coordinate:
        file_coordinate.truncate() # 清除函数

在合适的时机,使用上述清除函数即可,注意此时mode为’w’。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值