Я новичок в Python (в этом я узнал его по курсу CodeAcademy) и мог бы использовать некоторую помощь, чтобы понять это.Python: выберите случайную строку из файла, затем удалите эту строку.
У меня есть файл «TestingDeleteLines.txt», это около 300 строк текста. Прямо сейчас, я пытаюсь заставить его напечатать мне 10 случайных строк из этого файла, а затем удалить эти строки.
Так что, если мой файл имеет 10 строк:
Морковь
Banana
Клубничный
Canteloupe
Blueberry
Закуски
Яблоко
малина
Papaya
Арбуз
мне нужно, чтобы случайно выбрать из этих линий, скажите мне, что это случайно выбрал черника, морковь, арбуз, и банан, а затем удалить эти линии.
Проблема заключается в том, что когда Python считывает файл, он считывает этот файл, и как только он дойдет до конца, он не вернется и не удалит строки. Мое нынешнее мышление состояло в том, что я мог бы писать строки в списке, затем снова открывать файл, сопоставлять список с текстовым файлом, а если он находит совпадение, удалите строки.
Моя нынешняя проблема имеет два аспекта:
- Это дублирование случайных элементов. Если он выбирает линию, мне нужно, чтобы она не выбирала ту же линию снова. Однако использование random.sample, похоже, не работает, так как мне нужны эти строки, отделенные, когда я позже использую каждую строку для добавления к URL-адресу.
Я не чувствую, что моя логика (запись в массив-> поиск совпадений в текстовом файле-> удаление) является самой идеальной логикой. Есть ли лучший способ написать это?
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()
Способ сделать это, чтобы открыть файл, прочитать во всех строках с помощью 'readlines()', закрыть файл, а затем переписать весь файл. –
Как мне сказать, чтобы просто удалить случайные строки? –
['' 'file_object.seek (0)' ''] (https://docs.python.org/3/library/io.html#io.TextIOBase.seek) должно позволить вам снова начать повторение с начала. В вашем примере '' 'lines''' выглядит так: * file_object *. – wwii