Как мне написать каждый символ большого текстового файла, используя python? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь сделать так, чтобы программа отправляла каждый символ текстового файла через веб-сайт WhatsApp, но размер файла слишком велик, поэтому, когда программа создает большую строку, она обрабатывается sh из-за ошибки памяти.

Вот мой код:

from pynput.keyboard import Key, Controller
import time
import random
pi = open('pi.txt').read()
keyboard = Controller()
input("Press enter to continue")
cont = 5
while cont > 0 :
    time.sleep(1)
    print(cont)
    cont -= 1

for x in pi:
    tic = random.randint(0,10)/10
    time.sleep(tic)
    keyboard.type(x)
    keyboard.press(Key.enter)
    keyboard.release(Key.enter)

случайное время для WhatsApp, чтобы не обнаружить меня как бота

РЕДАКТИРОВАТЬ: TXT-файл представляет собой одну строку, поэтому чтение строки линия будет в любом случае sh де-программировать

Ответы [ 3 ]

1 голос
/ 17 апреля 2020

Вы можете попробовать использовать следующий код:

from pynput.keyboard import Key, Controller
import time
import random
keyboard = Controller()
input("Press enter to continue")
cont = 5
while cont > 0 :
    time.sleep(1)
    print(cont)
    cont -= 1

with open('pi.txt') as pi:

    for x in pi:
        tic = random.randint(0,10)/10
        time.sleep(tic)
        keyboard.type(x)
        keyboard.press(Key.enter)
        keyboard.release(Key.enter)

Объяснение: При использовании метода " read " вы фактически прочитайте весь текст в файле в переменную pi.

В приведенном выше коде вы можете видеть, что итерации выполняются построчно.

Внутренний файл повторяется лениво кусками, поэтому весь файл никогда не существует полностью в памяти, поэтому не вызывает крэ sh.

0 голосов
/ 18 апреля 2020

Решение состояло в том, чтобы разбить txt-файл и соответствующую ему строку на куски, чтобы программа могла читать его по частям, а не весь файл. Таким образом, весь файл не существует в программе одновременно.

Вот код результата:

from pynput.keyboard import Key, Controller
import time
import random
keyboard = Controller()
input("Press enter to continue")
cont = 5
while cont > 0 :
    time.sleep(1)
    print(cont)
    cont -= 1

chunksize = 1000000
with open('pi.txt', 'r') as f:
    while True:
        pi = f.read(chunksize)
        if not pi:
            break # done
        for x in pi:
            tic = random.randint(0,10)/10
            time.sleep(tic)
            keyboard.type(x)
            keyboard.press(Key.enter)
            keyboard.release(Key.enter)
0 голосов
/ 17 апреля 2020

Ну, на самом деле это зависит от скорости и емкости вашего компьютера, и есть еще один факт, что вы не можете отправлять файлы размером более 64 МБ через веб-сеть WhatsApp. Если вы отправляете каждый символ из файла через python, вы можете ввести только 65 536 символов текста в WhatsApp, поэтому убедитесь, что он не больше этого.

...