0

我刚开始编写一个应该创建、比较和加载文本文件条目的代码。该程序正在询问您的姓名、年龄和身高。然后它将创建一个文本文件,如下所示:

文森特,18,190

我已经让它工作了,但是一旦我关闭它,我就无法弄清楚如何将这些信息加载回 Python 中。我想调用load,然后它将加载所有文本文件条目并将它们显示为:

姓名:“姓名”
年龄:“年龄”
身高:“身高”

我可以这样做吗?

4

6 回答 6

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')
于 2012-04-30T10:12:28.203 回答
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]
于 2012-04-30T10:12:28.963 回答
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
于 2012-04-30T10:29:11.140 回答
0

另一种方法是使用标准 csv 模块将文件行读入像['Vincent', '18', '190'].

如果您希望将数字作为整数(即​​不作为字符串),则必须通过显式转换字符串int(str_variable)

于 2012-04-30T10:31:12.653 回答
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
于 2013-01-25T03:47:11.257 回答
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
于 2012-04-30T10:39:33.540 回答