如何从python中的文件的最后一行读取第一个字符

时间:2017-01-11 11:23:26

标签: python

我在python中写了一个记分板(我对这门语言很新)。基本上用户输入他们的名字,我希望程序读取文件以确定用户被分配到的号码。

  • 例如,.txt文件中的名称为:
  • Num Name Score
    1. John Doe 3
    1. Mitch 5
    1. Jane 1

如何在没有用户输入要写入的确切字符串的情况下添加用户号4,只有他们的名字。

非常感谢!

3 个答案:

答案 0 :(得分:0)

我建议您重新考虑您的设计 - 您可能不需要文件中的行号,但是您可以只读取文件并查看有多少行。

如果您最终获得大量数据,则无法扩展。

>>> with open("data.txt") as f:
...   l = list(f)
...

这会读取您的标题

>>> l
['Num Name Score\n', 'John Doe 3\n', 'Mitch 5\n', 'Jane 1\n']
>>> len(l)
4

因此len(l)-1是最后一个数字,len(l)是您需要的。

答案 1 :(得分:0)

获取行数的最简单方法是使用readlines()

x=open("scoreboard.txt", "r")
line=x.readlines()
lastlinenumber= len(line)-1
x.close()

with open('scoreboard.txt', 'a') as scoreboard: #FIle is opened for appending
username = input("Enter your name!")
scoreboard.write(str(lastlinenumber) + '. ' + str(username) + ":  " + '\n')
scoreboard.close()

答案 2 :(得分:-1)

def add_user():
with open('scoreboard.txt', 'r') as scoreboard: 
    #Reads the file to get the numbering of the next player.
    highest_num = 0
    for line in scoreboard:
        number = scoreboard.read(1)
        num = 0
        if number == '':
            num == 1
        else:
            num = int(number)
        if num > highest_num:
            highest_num = num
    highest_num += 1

with open('scoreboard.txt', 'a') as scoreboard: #FIle is opened for appending
    username = input("Enter your name!")
    scoreboard.write(str(highest_num) + '. ' + str(username) + ":  " + '\n')
    scoreboard.close()

谢谢你们,我明白了。这是我将新用户添加到列表的最终代码。