Как получить указанную c строку из текста без \ n (Python) - PullRequest
0 голосов
/ 20 апреля 2020

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

, чтобы я мог сделать x = f.readline () и вызвать его после завершения проверки, которая будет работать без проблем, поскольку x требуется в 1. Def и он меняется каждый раз, я не могу изменить его положение. поэтому я попытался сделать y = f.readline () в статусе def, что также должно работать, но поскольку я снова вызываю readline, обе переменные меняются. Мне нужно, чтобы проверить и сообщить построчно. Также readline () Копирует \ n, что вызывает много проблем

Позвольте мне сделать это немного более понятным. вот более простой код

f = open('list.txt', 'r')

def part1():
    x = f.readline()
    xxx = x[0:][:16]
    xxxx = x[17:][:2]
    driver.get('https://website.com')
    elem = driver.find_element_by_name("example")
    elem.send_keys(xxx);
    elem = driver.find_element_by_name("example2")
    elem.send_keys(xxxx);
    ......

def checkpart():
    part1()
    (some sleep code)
    if driver.find_elements_by_xpath("//*[contains(text(), 'checkprocess')]"):
        print('[-] Bad: ', x)
    elif driver.find_elements_by_xpath("//*[contains(text(), 'checkprocess2')]"):
        print('[+] Good: ', x)
    else:
        print('[+] Smthelse: ', x)

(some input questions...)

i = 1

register() //other function thats not needed here//

while i <= input:
        checkpart()
        time.sleep(1)
        i += 1

Это немного сложно, и я не смог найти более простой способ readline (). хотя он не позволяет мне отображать x в клетке, и он также копирует \ n

Мне нужно отобразить текущую проверенную строку (то есть x), не меняя ее и не копируя в конце \ n об этом.

Поскольку я сказал, что это немного сложно для меня, я провел много исследований, которые не придумали ничего, что поможет. я тоже выдаю то же самое в php.

Ответы [ 4 ]

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

Может print(x, end = "") будет достаточно?

Не могли бы вы дать дополнительные требования?

В качестве альтернативы вы можете удалить только последний символ с помощью x [: - 1], но, как я заметил, вы уже знают об этой возможности.

--- EDIT --- Кстати, как уже упоминалось выше, вероятно, лучше прочитать весь файл (или часть) в список, а затем повторить список.

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

Вы можете выполнить чтение файла в checkpart () и просто передать x в part1 (x). И чтобы избежать завершающей новой строки, вы можете использовать x.rstrip ()

f = open('list.txt', 'r')

def part1(x):
    xxx = x[0:][:16]
    xxxx = x[17:][:2]
    driver.get('https://website.com')
    elem = driver.find_element_by_name("example")
    elem.send_keys(xxx);
    elem = driver.find_element_by_name("example2")
    elem.send_keys(xxxx);
    ......

def checkpart():
    x = f.readline().rstrip()
    part1(x)
    (some sleep code)
    if driver.find_elements_by_xpath("//*[contains(text(), 'checkprocess')]"):
        print('[-] Bad: ', x)
    elif driver.find_elements_by_xpath("//*[contains(text(), 'checkprocess2')]"):
        print('[+] Good: ', x)
    else:
        print('[+] Smthelse: ', x)

(some input questions...)

i = 1

register() //other function thats not needed here//

while i <= input:
        checkpart()
        time.sleep(1)
        i += 1
0 голосов
/ 20 апреля 2020

Вы пробовали читать файл? Затем вы можете использовать split для создания или перечисления, например:

f = open("list.txt", "r")

f_read = f.read()

f_list = f_read.split("\n")
0 голосов
/ 20 апреля 2020

Вместо использования самого дескриптора файла (переменная f), вы можете прочитать весь текст в память и работать оттуда. Вам не нужно беспокоиться о расположении курсора в вашем файловом потоке.

f = open('list.txt', 'r')
content = f.readlines()
f.close()

for line in content:
    part1(line)
    checkpart(line)

Теперь вы можете работать с переменным содержимым без головной боли

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...