我有一个名为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时我希望它从文件中删除所以当我再次使用程序继续从第二个数字。
关于代码的任何想法?
答案 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()的列表中,然后当您获得一行时,只需将其从列表中删除,然后将列表写入文件即可。每次执行读取时,您都将覆盖整个文件(不仅仅是内联删除数据),但是在确保文件内容是最新的(我知道其中)的同时,无法执行此操作。