在python中读取和删除行

在python中读取和删除行,python,Python,我试图读取一个特定文件中的所有行,它将该行的编号打印为索引 我试图做的是通过输入用户的行号来删除该行。 就目前而言,它会打印所有带有该行编号的行,但当我输入要删除的行的编号时,它不会被删除 这是删除功能的代码: def deleteorders (): index = 0 fh = open ('orders.txt', 'r') lines = fh.readlines() for line in lines: lines = fh.read

我试图读取一个特定文件中的所有行,它将该行的编号打印为索引

我试图做的是通过输入用户的行号来删除该行。 就目前而言,它会打印所有带有该行编号的行,但当我输入要删除的行的编号时,它不会被删除

这是删除功能的代码:

def deleteorders ():

    index = 0
    fh = open ('orders.txt', 'r')
    lines = fh.readlines()

    for line in lines:
        lines = fh.readlines()
        index = index+1
        print (str(index) + ' ' + line)


    try:
        indexinp = int(input('Enter the number of the order to be deleted, or "B" to go back: '))

        if indexinp == 'B':
            return
        else:
            del line[indexinp]
            print (line)

            fh = open ('orders.txt', 'w')
            fh.writelines(line)
            fh.close()

    except:
        print ('The entered number is not in the range')
        return
这应该可以工作(您需要将错误处理添加回):


执行此行时,
lines=fh.readlines()
变量
lines
将成为文件中行的Python列表,编号(自动)从0到文件中的行数减1。要删除一行,
index
(比如说),从这个列表中写
dellines[index]
就足够了。但是要小心。我们大多数人迟早会犯这个错误。你删除的那一行之外的所有行都将重新编号。为什么
for
循环中有
lines=fh.readlines()
lines = enumerate(open('orders.txt'))
for i, line in lines:
    print i, line
i = int(input(">"))
open('orders.txt', 'w').write(''.join((v for k, v in lines if k != i)))