繁体   English   中英

Python只写文件的第一行吗?

[英]Python only writing first line of file?

我之前曾向组织文件信息的程序发布过一个问题: 是否可以通过python中的list元素来组织文件内容?

我现在正尝试使用以下代码将信息写入新文件

def main():
    #open the file
    info = open('Studentinfo.txt', 'r')
    #make file content into a list
    allItems = []
    #loop to strip and split
    for i in info:
        data = i.rstrip('\n').split(',')
        allItems.append(data)

    allItems.sort(key=lambda x: x[3]) # sort by activity

    for data in allItems:
        first = data[1]
        last = data[0]
        house = data[2]
        activity = data[3]
        a = str(first)
        b = str(last)
        c = str(house)
        d = str(activity)
    f = open('activites.txt', 'w')
    f.write(a)
    f.write(b)
    f.write(c)
    f.write(d)
    f.close()

main()

但是当我打开新的文本文件而不是

Amewolo, bob J.,E2,none
Andrade, Danny R.,E2,SOCCER
Banks-Audu, Rob A.,E2,FOOTBALL
Anderson, billy D.,E1,basketball
souza, Ian L.,E1,ECO CLUB
Garcia, Yellow,E1,NONE
Brads, Kev J.,N1,BAND
Glasper, Larry L.,N1,CHOIR
Dimijian, Annie A.,S2,SPEECH AND DEBATE

只有

 Amewolo, bob J.,E2,none

为什么python只写第一行

您仅在for循环之后写入文件,而不是一次写出一组数据。 换句话说,您要遍历所有数据,然后,打开文件,写入最后4项,然后关闭它。

您需要打开文件,将所有内容写入其中,然后关闭。 尝试这个

f = open('activites.txt', 'w') # open the file first
for data in allItems: # iterate over all of the data
    first = data[1]
    last = data[0]
    house = data[2]
    activity = data[3]
    a = str(first)
    b = str(last)
    c = str(house)
    d = str(activity)
    f.write(a) # write each element out
    f.write(b)
    f.write(c)
    f.write(d)
f.close() # then close

但是,不需要str()调用。 firstlasthouseactivity已经是字符串。

与结合with的语句,这整个事情可能崩溃到

with open('activites.txt', 'w') as f:
    for data in allItems:
        data = [data[0], data[1]] + data[2:]
        print(*data, file=f, sep=', ')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM