繁体   English   中英

如何以有组织的方式写入文件?

[英]How to write to a file in an organized manner?

我有以下代码:

file = open('scores.txt','w')
playerscores = []
playernames = [['A'],['B'],['C'],['D'],['E'],['F']]   
for y in range(6):
    for z in range(5):
            print("Enter score from Judge",z+1,"for couple ",playernames[0+y],"in round 1:")
            playerscores.append(int(input()))    
MY_LIST = str(playerscores)
for_every = 4

本质上,我想通过在新行上打印以下索引位置来写入文件

playerscore[0:6]
playerscore[7:13]

等等

因此,它看起来像:

1,1,1,1,1,1,1,1,1,1

而不是[1,1,1,1,1,1]

我需要这样做

file = open('filename','r')

并调用职位,很容易给出。

如果我理解正确,那么您正在寻找这样的东西:

l = [4,3,2,5,6,4,6]
# split l in chunks -> e.g. [[4,3,2], [5,6,4,6]] 
chunks = [[4,3,2], [5,6,4,6]]

with open('file.txt', 'w') as f: 
    for i,chunk in enumerate(chunks):
        if i!=0:
            f.write('\n'+','.join(str(i) for i in chunk))
        else:
            f.write(','.join(str(i) for i in chunk))

# read data back in ls as integers
ls = []
with open('file.txt', 'r') as f:
    lines = f.read().splitlines()
    for line in lines:
        ls += map(int,line.split(','))

print ls

尽管它是从我的get_data()函数而不是从input()获取数据的,但是这是一些get_data()您需要的代码。 这使代码更易于测试。 但是,一旦完成程序开发,就可以轻松地用input()替换get_data()调用。

关键思想是,除了将输入数据的整数版本保存到playerscores我们还将其原始字符串形式保存在一个单独的名为row列表中。 因此,当我们完成读取给定行的数据时,可以轻松地将其保存到文件中。 这比尝试将数据从playerscores分离出来并将其转换回字符串更简单。

from random import seed, randrange

# Seed the randomizer
seed(42)

# Make some fake data, to simulate user input.
# Print & return a random number from 1 to 5, in string form
def get_data():
    n = str(randrange(1, 6))
    print(n)
    return n

playernames = ['A', 'B', 'C', 'D', 'E', 'F']

numjudges = 5

playerscores = []
scoresfile = open('scores.txt', 'w')

for players in playernames:
    row = []
    for z in range(1, numjudges + 1):
        print("Enter score from Judge", z, "for couple ", players, "in round 1:")
        data = get_data()
        playerscores.append(int(data))
        row.append(data)
    scoresfile.write(','.join(row) + '\n')
    print()
scoresfile.close()

典型输出

Enter score from Judge 1 for couple  A in round 1:
1
Enter score from Judge 2 for couple  A in round 1:
1
Enter score from Judge 3 for couple  A in round 1:
3
Enter score from Judge 4 for couple  A in round 1:
2
Enter score from Judge 5 for couple  A in round 1:
2

Enter score from Judge 1 for couple  B in round 1:
2
Enter score from Judge 2 for couple  B in round 1:
1
Enter score from Judge 3 for couple  B in round 1:
5
Enter score from Judge 4 for couple  B in round 1:
1
Enter score from Judge 5 for couple  B in round 1:
5

Enter score from Judge 1 for couple  C in round 1:
4
Enter score from Judge 2 for couple  C in round 1:
1
Enter score from Judge 3 for couple  C in round 1:
1
Enter score from Judge 4 for couple  C in round 1:
1
Enter score from Judge 5 for couple  C in round 1:
2

Enter score from Judge 1 for couple  D in round 1:
2
Enter score from Judge 2 for couple  D in round 1:
5
Enter score from Judge 3 for couple  D in round 1:
5
Enter score from Judge 4 for couple  D in round 1:
1
Enter score from Judge 5 for couple  D in round 1:
5

Enter score from Judge 1 for couple  E in round 1:
2
Enter score from Judge 2 for couple  E in round 1:
5
Enter score from Judge 3 for couple  E in round 1:
4
Enter score from Judge 4 for couple  E in round 1:
2
Enter score from Judge 5 for couple  E in round 1:
4

Enter score from Judge 1 for couple  F in round 1:
5
Enter score from Judge 2 for couple  F in round 1:
3
Enter score from Judge 3 for couple  F in round 1:
1
Enter score from Judge 4 for couple  F in round 1:
2
Enter score from Judge 5 for couple  F in round 1:
4

scores.txt的内容

1,1,3,2,2
2,1,5,1,5
4,1,1,1,2
2,5,5,1,5
2,5,4,2,4
5,3,1,2,4

暂无
暂无

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

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