Я не знаю, как читать случайный символ из текстового файла, и хотел бы научиться.
Вот что случилось, когда я начал возиться с python! Я знаю, что буду делать что-то подобное позже в школе, поэтому я тренируюсь. Как вы увидите, чтения строки недостаточно — я открыт для советов и просто прямого ответа, поскольку я понимаю, что мой код очень небрежный. Raspberry Pi с этим кодом работает под управлением Raspbian lite с несколькими дополнительными битами (графический интерфейс, бездействие) и работает под управлением Python 3.5.3.
Я пишу некоторые из них в текстовый файл:
f = open("selected.txt","w")
chars = 'abcdefghijklmnopqrstuvwxyz'
ucchars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
smbls = '`¬!"£$%^&*()-_=+{[}]:;@~#<,>.?'
nos = '1234567890'
space = ' '
Так:
usechars = input('Use lower case letters? answer y or n.')
if usechars == 'y':
f.write(chars)
useucchars = input('Use upper case letters? answer y or n.')
if useucchars == 'y':
f.write(ucchars)
usesmbls = input('Use symbols? answer y or n.')
if usesmbls == 'y':
f.write(smbls)
usenos = input('Use numbers 0-9? answer y or n.')
if usenos == 'y':
f.write(nos)
usespace = input('Use spaces? answer y or n.')
if usespace == 'y':
f.write(space)
Я хотел бы напечатать выбранное количество случайных символов из текстового файла и распечатать его в оболочке, но я не знаю, как получить случайный один символ из текстового файла. Если бы был лучший способ сделать это (вероятно, так) или вам нужно больше кода, пожалуйста, скажите мне. Заранее спасибо.
ОБНОВИТЬ вот код:
f.close()
with open("selected.txt","r") as f:
contents = f.read
random_character = random.choice(contents)
for i in range(amnt):
password = ''
for c in range(length):
password += random_character
print(password)
Если файл не очень большой, простой способ выбрать случайный символ — сначала прочитать его в строку, а затем просто выбрать случайный символ из строки:
import random
with open("selected.txt", "r") as f:
contents = f.read() # NOTE the () after read
random_character = random.choice(contents)
print("The random character I've chosen is: ", random_character)
Если вы хотите создать строку со случайным выбором, вы можете использовать цикл for, но вы должны выбрать новый случайный символ внутри цикла:
with open("selected.txt","r") as f:
contents = f.read()
password = ''
for i in range(amnt):
random_character = random.choice(contents)
for c in range(length):
password += random_character
print(password)
Я получаю сообщение об ошибке. Вероятно, это моя голая установка Python, но это может быть и мой код Traceback (most recent call last): File "/home/pi/password.py", line 33, in <module> random_character = random.choice(contents) File "/usr/lib/python3.5/random.py", line 262, in choice i = self._randbelow(len(seq)) TypeError: object of type 'builtin_function_or_method' has no len()
Я подозреваю, что у вас есть f.read
вместо f.read()
(с скобками) в вашем коде.
Действительно, это можно увидеть в строке 2 последнего блока кода в ОП.
Ваш обновленный код содержит несколько ошибок, которые я рассматриваю в моем обновлении к моему ответу. Вы также можете проверить документы StackOverflow на что делать с ответами.