我刚刚开始编写应该创建,比较和加载文本文件条目的代码。 该计划要求您提供姓名,年龄和身高。然后它将创建一个类似的文本文件:
文森特,18190
我已经让这个工作了,但是一旦我关闭它,我无法弄清楚如何将这些信息加载回Python。我想调用load
,然后它将加载所有文本文件条目并将其显示为:
名称: “姓名”
年龄:“年龄”
高度: “高度”
我可以这样做吗?
答案 0 :(得分:4)
您可以像这样打开以前保存的文本文件
with open('myData.txt') as infp:
for line in infp:
# process line
line = line.rstrip()
(这也将为您关闭文件)
例如,如果文件中每行存储三个项目,则可以编写
name, age, height = line.split(',')
将值输入变量(假设数据在最初存储时用逗号分隔,没有空格)。然后以您指定的格式生成输出:
print 'Name:"%s"' %name
print 'Age:"%s"' %age
print 'Height:"%s"' %height
正如@pepr所指出的,取决于数据的存储方式(单词和逗号之间的空格),split(',')
生成的数据中可能存在前导/尾随空白,在这种情况下,有必要使用strip()
来消除任何额外的空白。在显示的数据样本中,情况并非如此,上面的代码应该可以工作。
以下所有内容都包含在一个函数中:
def load(datafile):
with open(datafile) as infp:
for line in infp:
line = line.rstrip()
name, age, height = line.split(',')
print 'Name:"%s"' %name
print 'Age:"%s"' %age
print 'Height:"%s"' %height
如果您的数据保存在名为“myData.txt”的文件中,请按以下方式调用上述load
函数
load('myData.txt')
答案 1 :(得分:2)
data = open('file.txt').read().splitlines()
for line in data:
person = line.split(',')
print 'Name:', person[0]
print 'Age:', person[1]
print 'Height:', person[2]
答案 2 :(得分:1)
fil=open('file.txt','r')
for line in fil: # iterate through the file.txt line by line
name,age,height=line.rstrip().split(',') #now after this name='Vincent' and age='18' , height='190'
print(name,age,height)
输出
vincent 18 190
答案 3 :(得分:0)
另一种方法是使用标准csv模块将文件行读入['Vincent', '18', '190']
之类的行。
如果您希望数字为整数(即不是字符串),则必须通过int(str_variable)
显式转换字符串。
答案 4 :(得分:0)
保存文件后,请使用此文件阅读:
import csv
filename = 'myfile.txt'
# the code that creates
# the file goes here
the_file = csv.reader(open(filename, 'rb'))
for line in the_file:
# line[0] is Name
# line[1] is Age
# line[2] is Height
答案 5 :(得分:0)
这对我有用
f = open('temp.txt', 'r')
for line in f.readlines():
a,b,c = line.split(',')
print "Name:%s\nAge:%s\nHeight:%s\n" % (a,b,c)
f.close()
输出
Name:Vincent
Age:18
Size:190