我是Python的新手(因为我是通过CodeAcademy课程学习的),可以使用一些帮助来解决这一问题。
我有一个文件“ TestingDeleteLines.txt”,大约300行文本。现在,我正在尝试使其从该文件中打印10条随机行,然后删除这些行。
因此,如果我的文件有10行:
Carrot Banana Strawberry Canteloupe Blueberry Snacks Apple Raspberry Papaya Watermelon
我需要它从这些行中随机选择,告诉我它是随机选择的蓝莓,胡萝卜,西瓜和香蕉,然后删除这些行。
问题是,当Python读取文件时,它将读取该文件,并且一旦到达末尾,它就不会返回并删除行。我目前的想法是,我可以将这些行写到一个列表中,然后重新打开该文件,将该列表与文本文件进行匹配,如果找到匹配项,则删除这些行。
我当前的问题是双重的:
random.sample
import webbrowser import random """url= 'http://www.google.com' webbrowser.open_new_tab(url+myline)""" Eventually, I need a base URL + my 10 random lines opening in each new tab def ShowMeTheRandoms(): x=1 DeleteList= [] lines=open('TestingDeleteLines.txt').read().splitlines() for x in range(0,10): myline=random.choice(lines) print(myline) """debugging, remove later""" DeleteList.append(myline) x=x+1 print DeleteList """debugging, remove later""" ShowMeTheRandoms()
#!/usr/bin/env python import random k = 10 filename = 'TestingDeleteLines.txt' with open(filename) as file: lines = file.read().splitlines() if len(lines) > k: random_lines = random.sample(lines, k) print("\n".join(random_lines)) # print random lines with open(filename, 'w') as output_file: output_file.writelines(line + "\n" for line in lines if line not in random_lines) elif lines: # file is too small print("\n".join(lines)) # print all lines with open(filename, 'wb', 0): # empty the file pass