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