python读取一个存储若干数字的文件(python读取一个存储若干数字
怎么用python直接读取txt文件中的数字
#?-*-?coding:utf-8?-*-
f=open('test.txt')
s?=?f.readline()
print(s)
while?s!='\n':
?????arr=s.split('?')
?????a1=arr[0]
?????a2=arr[1].replace('\n','')?#readline?读取文件的时候,默认加上“\n"
?????print(a1)
?????print(a2)
?????s=f.readline()
读取test.txt 赋值给变量a1,a2
Python如何从文件读取数据
1.1 读取整个文件
要读取文件,需要一个包含几行文本的文件(文件PI_DESC.txt与file_reader.py在同一目录下)
PI_DESC.txt
3.1415926535
8979323846
2643383279
5028841971
file_reader.py
with open("PI_DESC.txt") as file_object:
contents = file_object.read()
print(contents)
我们可以看出,读取文件时,并没有使用colse()方法,那么未妥善的关闭文件,会不会导致文件收到损坏呢?在这里是不会的,因为我们在open()方法前边引入了关键字with,该关键字的作用是:在不需要访问文件后将其关闭
1.2文件路径
程序在读取文本文件的时候,如果不给定路径,那么它会先在当前目录下进行检索,有时候我们需要读取其他文件夹中的路径,例如:
现在文件PI_DESC.txt存储在python目录的子文件夹txt中
那么我们读取文本内容的代码得修改为:
with open("txt\PI_DESC.txt") as file_object:
contents = file_object.read()
print(contents)
给open参数传递的参数得给相对路径
在Windows中,使用反斜杠(\),但是由于python中,反斜杠被视为转义字符,在Windows最好在路径开头的单(双)引号前加上r
相对路径:即相对于程序文件的路径
绝对路径:即文本在硬盘上存储的路径
使用绝对路径的程序怎么写呢 ?
with open(r"D:\python\txt\PI_DESC.txt") as file_object:
contents = file_object.read()
print(contents)
1.3逐行读取
读取文件时,可能需要读取文件中的每一行,要以每一行的方式来检查文件或者修改文件,那么可以对文件对象使用for循环
file_path = 'txt\PI_DESC.txt'with open(file_path) as file_object:
for line in file_object:
print(line)
程序运行结果如下:
通过运行结果我们可以看出,打印结果中间有很多空白行,这些空白行是怎么来的呢?因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加一个换行符,因此每行末尾就有2个换行符:一个来自文件,另外一个来自print,消除这些换行符,只需要使用方法rstrip()
file_path = 'txt\PI_DESC.txt'with open(file_path) as file_object:
for line in file_object:
print(line.rstrip())
打印结果
通过运行结果我们可以看出,打印结果中间有很多空白行,这些空白行是怎么来的呢?因为在这个文件中,每行的末尾都有一个看不见的换行符,而print语句也会加一个换行符,因此每行末尾就有2个换行符:一个来自文件,另外一个来自print,消除这些换行符,只需要使用方法rstrip()
file_path = 'txt\PI_DESC.txt'with open(file_path) as file_object:
for line in file_object:
print(line.rstrip())
打印结果
1.4创建一个包含文件各行内容的列表
使用关键字with时,open()返回的文件对象只能在with代码块可用,如果要在with代码块外访问文件的内容,可在with块中将文件各行存储在一个列表,并在with代码块外使用该列表
file_path = 'txt\PI_DESC.txt'with open(file_path) as file_object:
lines = file_object.readlines()for line in lines:
print(line.rstrip())
1.5使用文件的内容
在上面一节中我们提到把数据提取到内存中,那么我们就可以对数据进行随心所欲的操作了
需要:将圆周率连在一起打印出来(删除空格),并打印其长度
file_path = 'txt\PI_DESC.txt'with open(file_path) as file_object:
lines = file_object.readlines()pi_str = ''for line in lines:
pi_str += line.strip()print(pi_str.rstrip())print(len(pi_str.rstrip()))
file_path = 'txt\PI_DESC.txt'with open(file_path) as file_object:
lines = file_object.readlines()pi_str = ''for line in lines:
pi_str += line.strip()print(pi_str.rstrip())print(len(pi_str.rstrip()))
注意最后print语句并没有缩进,如果是缩进的话就会每取一行打印一次
打印效果如下
python如何读取一个由数字构成的txt,然后5个list周期性读取?
f?=?'data.txt'
with?open(f,'r')?as?f1:
l1?=?f1.read().replace('\n','?')
l2?=?l1.split()
for?i?in?range(0,len(l2),5):
l3?=?l2[i:i+5]
print(l3)
如插入中的代码所示,
第一行代码假设你的数据文件名为data.txt,
第二行的代码为以只读方式打开文件,
第三行代码的作用是读取文件到字符串,然后把其中的换行符用空格表示,以便可以用5个数一行输出,
第四行代码是把字符串中的各个数字分开来作为列表赋值给l2,
剩下的三行代码就是以每行五个数字列表,循环输出,知道数据结束。
with.....as......语句用于上下文管理器,在它里面的语句执行结束后,文件会自动关闭,其中的range是一个迭代器,通常用于for循环。
python从txt文件中读取数字,并放入list中
背景:
文件内容每一行是由N个单一数字组成的,每个数字之间由制表符区分,比如:
0 ? ?4 ? ?3 ? ?1 ? ?2 ?
2 ? ?1 ? ?0 ? ?3 ?
1 ? ?2 ? ?0 ?
……
现在需要将每一行数据存为一个list,然后所有行组成一个大的list。
工具:
1.strip():用于移除字符串头尾指定的字符,默认为空格,返回是字符串。
2.split():通过指定分隔符对字符串进行切片,返回是字符串组成的list。
实例:
某文件data.txt 中存放了若干个整数,各整数之间使用英文逗号分割,用python编写程序编写程序?
大致如下:
# 读取文件
file = r"D:\folderpath\data.txt"
with open(file, "r") as f:
a = [i.strip("\n").split(",") for i in f.readlines()]
上述操作后将得到一个嵌套列表,如:[['1', '12'], ['1', '3'], ['5', '2']]
#展开列表,并排序 eg.[1, 1, 2, 2, 3, 4, 4]
b =sorted( [int(i) for j in a for i in j])
# output
outfile = r"d:\test\output.txt"
with open(outfile,"w") as o:
for i in b:
j = str(i) + "\n"
o.write(j)