如何在使用write()时附加到文件的新行?

时间:2012-11-16 01:59:05

标签: python python-3.x

在Python中: 假设我有一个循环,在每个循环中我生成一个具有以下格式的列表: [ 'N1', 'N2', 'N3'] 在每个循环之后,我想编写以将生成的条目附加到文件(其包含先前循环的所有输出)。我怎么能这样做?

另外,有没有办法制作一个列表,其条目是这个循环的输出?即 [[],[],[]]其中每个内部[] = ['n1','n2','n3]等

3 个答案:

答案 0 :(得分:4)

将单个列表作为一行写入文件

当然,在将其转换为字符串后,您可以将其写入文件中:

with open('some_file.dat', 'w') as f:
    for x in xrange(10):  # assume 10 cycles
        line = []
        # ... (here is your code, appending data to line) ...
        f.write('%r\n' % line)  # here you write representation to separate line

一次写入所有行

关于问题的第二部分:

  

另外,有没有办法制作一个列表,其条目是这个循环的输出?即[[],[],[]],其中每个内部[] = ['n1','n2','n3']

它也很基本。假设您想立即保存所有内容,请写下:

lines = []  # container for a list of lines
for x in xrange(10):  # assume 10 cycles
    line = []
    # ... (here is your code, appending data to line) ...
    lines.append('%r\n' % line)  # here you add line to the list of lines
# here "lines" is your list of cycle results
with open('some_file.dat', 'w') as f:
    f.writelines(lines)

将列表写入文件的更好方法

根据您的需要,您应该使用一种更专业的格式,而不仅仅是文本文件。您可以使用例如,而不是编写列表表示(可以,但不理想)。 csv模块(类似于Excel的电子表格):http://docs.python.org/3.3/library/csv.html

答案 1 :(得分:2)

f = open(文件,'a')第一个para是文件的路径,第二个是模式,'a'是追加,'w'是写,'r'是读,等等 我的意见是,您可以使用 f.write(list +'\ n')在循环中写一行,否则您可以使用 f.writelines(list),它也起作用。

答案 2 :(得分:0)

希望这可以帮到你:

lVals = []
with open(filename, 'a') as f:
    for x,y,z in zip(range(10), range(5, 15), range(10, 20)):
        lVals.append([x,y,z])
        f.write(str(lVals[-1]))