我刚开始编写一个应该创建、比较和加载文本文件条目的代码。该程序正在询问您的姓名、年龄和身高。然后它将创建一个文本文件,如下所示:
文森特,18,190
我已经让它工作了,但是一旦我关闭它,我就无法弄清楚如何将这些信息加载回 Python 中。我想调用load
,然后它将加载所有文本文件条目并将它们显示为:
姓名:“姓名”
年龄:“年龄”
身高:“身高”
我可以这样做吗?
您可以像这样打开以前保存的文本文件
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')
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]
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
另一种方法是使用标准 csv 模块将文件行读入像['Vincent', '18', '190']
.
如果您希望将数字作为整数(即不作为字符串),则必须通过显式转换字符串int(str_variable)
。
这对我有用
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
保存文件后,使用它来阅读它:
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