如何有组织地写入文件?

2024-09-28 04:23:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个密码:

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')

而且叫一个位置,很容易就发出来了。你知道吗


Tags: infromtxt密码forrangeopenfile
2条回答

这里有一些代码可以满足您的需要,尽管它从我的get_data()函数而不是从input()获取数据。这使得代码更易于测试。但是一旦完成了程序的开发,就可以很容易地用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

内容分数.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

如果我理解正确的话,你在找这样的东西:

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

相关问题 更多 >

    热门问题