一、问题描述
已知一个文本文件(data.txt),其中存有若干数据,存储数据均为整数(不同整数之间以换行符进行的分隔),现要求使用python读取原始数据文件(文件中每行存取一个整数),将其按照升序排序之后再写入文本文件data_asc.txt文件中保存并存储。
二、代码实现
-
方法一:
import pandas as pd
import numpy as np
df=open("C:/Users/lenovo/Desktop/data.txt")#定义变量df用于存储目标数据文件
list1=[]#定义一个空列表,用于存储原有数据文件中的数据
for line in df:#定义变量line用于实际遍历文件中每行的数据,然后依次将数据添加至列表中
list1.append([int(x) for x in line.split()])
list1#此时原先的空列表中添加了以行为单位的嵌套列表存储形式的列表
list1.sort(reverse=False)#将列表中元素进行排序,此处为升序;反之,False为降序
list1
f=open("C:/Users/lenovo/Desktop/data_asc.txt","w")
for row in list1:
rowtxt = '{}'.format(row[0])
f.write(rowtxt)
f.write('\n')
f.close()
-
方法二:
with open ("C:/Users/lenovo/Desktop/data.txt") as f:#根据数据文件实际存储路径准确填写
data=f.readlines()#使用按行读取的方法读取数据文件中的所有元素
data=[int(line.strip()) for line in data]#将读取到的数据按行方式进行存储,同时去除中间的换行符
data.sort()#使用列表中的内置函数sort对完成处理后的列表进行重新排序
data=[str(i) + '\n' for i in data]#由于经过处理后的列表中的数据是使用行格式进行存储的,为转化为按照每行一个整数的形式进行输出需要进行转化,因此使用了列表推导式的循环遍历方法添加空格
with open ("C:/Users/lenovo/Desktop/data_asc.txt","w") as fp:#最后data变量经过上述处理之后成为了满足条件要求的数据,可以直接使用writelines(data)的方式进行输出
fp.writelines(data)