Ir ao conteúdo
  • Cadastre-se
MrFruit

Python Como tirar várias Screenshots?

Posts recomendados

import pyautogui

while True:
    image = pyautogui.screenshot()
    image.save(r'C:\Users\nanana\Desktop\Images\image.png')

Em vez dele salvar as Screenshots, ele sobrescreve elas. Como eu posso fazer para ele salvar dessa forma: image, image2, image3?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desta forma🤙

import pyautogui

contador = 0
while True:
    image = pyautogui.screenshot()
    contador+=1
    image.save(r'C:\Users\Fábio Pedro\Pictures\Camera Roll\image{}.png'.format(contador))

Se acaso precisar variar as extenções pelo motivo que for, você pode optar por informar através de um menu(como no exemplo abaixo) ou então salvando e carregando um arquivo de configuração que contém os parâmetros que você precisar.

import pyautogui

formato = int(input('Escolha o formato: 1 = PNG, 2 = JPG: '))

if formato == 1:

    contador = 0
    while True:
        image = pyautogui.screenshot()
        contador+=1
        image.save(r'C:\Users\Fábio Pedro\Pictures\Camera Roll\image{}.png'.format(contador))

if formato == 2:

    numero = 0
    while True:
        image = pyautogui.screenshot()
        numero += 1
        image.save(r'C:\Users\Fábio Pedro\Pictures\Camera Roll\image{}.jpg'.format(numero))

elif formato != 1 or 2:
    print('Digite apenas os números 1 ou 2 !')
    
# Só tratei se a entrada era para os números 1 ou 2 , não trarei LETRAS, é só uma demonstração.
# Mas você pode tratar isso usando isinstance(var, int).   

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
import pyautogui

x = 0
image = pyautogui.screenshot()
while True:
    x+=1
    x = str(x)
  image.save(r'C:\Users\nanana\Desktop\Images\image' + x + '.png')
  x = int(x)

Também tem essa forma. Não sei se é a ideal

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, MrFruit disse:

import pyautogui

x = 0
image = pyautogui.screenshot()
while True:
    x+=1
    x = str(x)
  image.save(r'C:\Users\nanana\Desktop\Images\image' + x + '.png')
  x = int(x)

Também tem essa forma. Não sei se é a ideal

 

Se você rodou esse código e funcionou, a princípio TUDO OK!. A funcionalidade esperada por você aconteceu!

Mas é sempre bom ver a qualidade do seu código, procurar dentro do possível reduzir ele, deixar mais semântico.

 

Se olhar lá no topo e contar só as linhas com código....em 6 linhas fiz os screenshots com um código claro, o que você precisava e de forma infinita, porém se eu quisesse limitar a uma quantidade de screenshots, bastaria trocar o TRUE por contador <100 por exemplo, eu teria 100 shots de tela se essa fosse a necessidade e ainda manteria meu código claro e em 6 linhas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então posso dizer que o .formart converte a variável para String somente na execução dele? Porquê depois disso o X continua sendo um Int

Compartilhar este post


Link para o post
Compartilhar em outros sites
2 horas atrás, MrFruit disse:

Então posso dizer que o .formart converte a variável para String somente na execução dele? Porquê depois disso o X continua sendo um Int

 

Sim o format é um método(função) da classe str, nativo do Python(builtins), sua natureza é converter qualquer dado em uma string e retornar os valores de forma posicional dentro das chaves {} inseridas no meio da string sem mudar a tipagem do dado enviado.

a = 1
b = 2
c = 3
print('A ordem é: {}, {}, {}'.format(a,b,c))

A saída na tela é

image.png.e6b463fc3501df9c3326882957b285c8.png

 

O format pode receber uma lista de argumentos *args ou um dicionário de argumento **kwargs a sintaxe do format como função é essa: def format(self, *args, **kwargs):

 

Então eu posso passar para ele um dado a ser formatado ou vários, segue alguns exemplos abaixo:

'''
Perceba que as entradas são numéricas! que nesse caso mando somar 
direto dentro da função que me retorna uma string a prova disso 
é o type que vai imprimir o tipo de classe a que esse dado pertence.
'''

a = 1
b = 2
print('A soma dos números é {}'.format(a+b))
print(type(format(a+b)))

O resultado na tela é este:

image.png.18c094a13e0349442ddcc4471dbfc0e8.png

 

Mais dois exemplos passando uma lista e um dicionário.

'''
Entra uma lista numérica e a saída será str e o type vai apontar 
isso dizendo a classe de dados que ela pertence.
'''
lista = [1,2,3]

for i in range(len(lista)):
    print('O numero da vez é: {}'.format(lista[i]))
    print(type(format(lista[i])))

O resultado na tela é esse:

image.png.11e8268a3f37bb06943b62f0e4ef1bc4.png

 

'''
O mesmo esquema da lista numérica, mas dessa vez estou passando um
dicionário de dados onde a chave é numérica e o valor é uma string
A chave poderia ser string que daria no mesmo. ex: {'1':'UM'}

Neste caso também apontará que a saída é pertencente a classe str.
Ou seja, como voce já apontou antes o format converte em string os dados.
Mas os valores que são passados antes mantém suas características(tipagem)
'''

dicionario = {1:'UM', 2:'DOIS', 3:'TRÊS'}

for i in dicionario:
    print('O numero da vez é: {}'.format(dicionario[i]))
    print(type(format(dicionario[i])))

A saída na tela é essa:

image.png.ec16e9b0adb9793f3c99468fe7b545f8.png

 

Se restou alguma dúvida é só deixar mensagem!🤙

 

 

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Redes de Computadores - Gabriel Torres

PROMOÇÃO DE QUARENTENA

De R$ 39,90 por apenas R$ 9,90 só até as 23h59min desta sexta-feira 03/04/2020

CLIQUE AQUI E COMPRE AGORA MESMO!