2 votes

Pourquoi ne copier qu'une seule déclaration lors de l'utilisation de pyperclip ?

J'ai essayé de créer un programme de recherche d'adresses email dans un fichier texte.Après avoir utilisé pyperclip je peux copier seulement la dernière adresse email mais je veux copier tous les emails dans le presse-papier.Comment puis-je faire ceci.Et aussi je voudrais essayer une autre façon de faire ceci si vous avez une meilleure façon de faire cette chose s'il vous plaît laissez-moi savoir aussi.En passant j'ai un autre fichier texte qui contient un fichier texte avec des emails.Et j'utilise cette gitlist pour faire ce programme en python. lien gitlist

from optparse 
import OptionParser

import os.path

import re

import pyperclip

regex = re.compile(("([a-z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+\/=?^_`"

                    "{|}~-]+)*(@|\sat\s)(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(\.|"

                    "\sdot\s))+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)"))

def file_to_str(filename):

    """Returns the contents of filename as a string."""

    with open(filename) as f:

        return f.read().lower() # Case is lowered to prevent regex mismatches.

def get_emails(s):

    """Returns an iterator of matched emails found in string s."""

    # Removing lines that start with '//' because the regular expression

    # mistakenly matches patterns like 'http://foo@bar.com' as '//foo@bar.com'.

    return (email[0] for email in re.findall(regex, s) if not email[0].startswith('//'))

if __name__ == '__main__':

    parser = OptionParser(usage="Usage: python %prog [FILE]...")

    # No options added yet. Add them here if you ever need them.

    options, args = parser.parse_args()

    if not args:

        parser.print_usage()

        exit(1)

    for arg in args:

        if os.path.isfile(arg):

            for email in get_emails(file_to_str(arg)):

                print(email)

                pyperclip.copy(email)

        else:

            print('"{}" is not a file.'.format(arg))

            parser.print_usage()

0voto

Dtheekshana Points 15

J'ai trouvé un moyen de le faire. Il n'est pas nécessaire d'écrire plusieurs lignes comme vous l'avez fait.

with open(r"text.txt", "r") as txt_reader:
found_email = "Not Found"

for line in txt_reader:
    if "email" in line.lower():
        #Breaks line into a list of words seperated by ':' Choses the 2nd 
     word and removes blank spaces        
        found_email = line.split(":")[1].strip()

print(found_email)

Par exemple, si votre fichier test.txt ressemble à ceci

Email: susantha@gmail.com

Password: pas5w0rd!

ce programme copiera l'email et le mot de passe dans le presse-papiers

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X