读取后从文本文件中删除行

时间:2014-10-26 13:23:52

标签: python text copy line

我有一个名为1.txt的文本文件,其中包含以下内容:

123456
011111
02222
03333

我创建了一个python代码,它将第一行复制到x个文件夹到文件number.txt 然后将第二个复制到x个文件夹:

progs = int(raw_input( "Folders Number : "))
with open('1.txt', 'r') as f:
    progs2 = f.read().splitlines()
progs3 = int(raw_input( "Copy time for each line : "))
for i in xrange(progs):
    splis = int(math.ceil(float(progs)/len(progs3)))
    with open("{0}/number.txt".format(pathname),'w') as fi:
        fi.write(progs2[i/splis])

我想编辑代码,将其复制到指定数量的文件夹后删除该行; 比如当代码复制数字123456时我希望它从文件中删除所以当我再次使用程序继续从第二个数字。

关于代码的任何想法?

2 个答案:

答案 0 :(得分:1)

我想把它写成评论,但我没有必要的观点 这样做我只会写一个答案。加上Darren Ringer的答案。

读完该行后,您可以关闭该文件并再次打开覆盖 它与旧内容除了你要删除的行, 已经在这个答案中描述了:

Deleting a specific line in a file (python)

另一种选择是使用相同的文件名使用就地过滤 对于您的输出,它将用过滤的内容替换旧文件。这个 基本上是一样的。您只需再次打开和关闭文件即可。 1_CR在以下问题中也已经回答了这个问题,也可以 可以在https://docs.python.org/Optional in-place filtering section)找到:

Deleting a line from a text file

根据您的情况,它看起来像这样:

import fileinput
import sys, os

os.chdir('/Path/to/your/file')

for line_number, line in enumerate(fileinput.input('1.txt', inplace=1)):
  if line_number == 0:
    # do something with the line
  else:
    sys.stdout.write(line) # Write the remaining lines back to your file

干杯

答案 1 :(得分:0)

您可以将所有行加载到带有readlines()的列表中,然后当您获得一行时,只需将其从列表中删除,然后将列表写入文件即可。每次执行读取时,您都将覆盖整个文件(不仅仅是内联删除数据),但是在确保文件内容是最新的(我知道其中)的同时,无法执行此操作。