Mais

Obtendo instruções de impressão no script Python para imprimir por meio de um arquivo em lote

Obtendo instruções de impressão no script Python para imprimir por meio de um arquivo em lote


Estou começando a aprender Python e arquivos em lote. Eu tenho um script Python que seleciona dados por local e exporta a seleção para uma nova classe de recurso. O script funciona perfeitamente - incluído neste script, tenho as seguintes linhas:

matchCount = int (arcpy.GetCount_management (featureLayer) .getOutput (0)) print str (matchCount) + "linhas exportadas"

Quando executo este script em PythonWin, a instrução de impressão acima é produzida na janela interativa. Quando executo este script por meio de um arquivo em lote, a instrução de impressão não é produzida. No final do meu arquivo em lote, escrevi PAUSE para que a tela não desapareça após a execução do meu script. Alguém tem ideias sobre como produzir minha declaração de impressão na linha de comando?


Você pode nos mostrar o conteúdo do seu arquivo em lote, por favor?

(Aliás, a prática recomendada é usararcpy.AddMessage ()em vez de imprimir, para portabilidade entre arquivos de linha de comando / lote e ArcMap. Mas imprimir está bem se você não quiser que sua mensagem seja exibida dentro do ArcMap.)


Uma maneira mais fácil de fazer isso é configurar o Eclipse para funcionar com PyDev e você pode executar seu código e depurá-lo lá. Você realmente debigá-lo lá, colocando paradas e vigias no código, para interogar os objetos.

Esse é o meu conselho.


Exemplos de declaração de impressão Python

Muitas pessoas começam sua programação com um simples “Hello World!” programa Tornou-se o primeiro programa tradicional que as pessoas aprendem. O programa “Hello, world” simplesmente imprime “Hello World!”. É simples o suficiente para que as pessoas que não têm experiência com programação de computadores possam facilmente começar a programar em uma nova linguagem.

O programa Hello World ”em Python é muito simples, é uma instrução de uma linha, conforme mostrado abaixo,

Observação: os exemplos deste documento são criados usando o python 2.7. No Python 3+, você deve usar a instrução print em vez do comando print.


Executando isso!

Como dito acima, o uso do Python 3 não conseguiu executá-lo. Alterar as instruções de impressão para funções corrigiu esse problema. O Python 2 também oferece suporte à função print (), portanto, não deve haver problemas para executar no Python 2 também.

O programa foi executado conforme o esperado com um arquivo correto e produziu um arquivo de saída com os valores convertidos.

Executá-lo com um arquivo inválido, ou sem nenhum argumento, trava o programa com um FileNotFoundError ou ValueError respectivamente. Se foi fornecido um arquivo que existe, mas contém um valor hexadecimal inválido (por exemplo, uma string aleatória), o programa também falha:

Os erros acima nos dizem que precisamos de alguma verificação de erros.

O primeiro erro a resolver seria o ValueError de não fornecer um nome de arquivo como argumento ao executar o programa. Isso pode ser resolvido usando um módulo CLI como argparse, click ou talvez outro de sua preferência. Eu pessoalmente uso argparse, pois é muito simples e faz parte da biblioteca padrão.

Neste ponto, você pode acessar os argumentos da linha de comando args como um dicionário.

A parte if __name__ == '__main__': do código só é aplicável se for executado como um script. Isso significa que, se o arquivo for importado como um módulo, ele não será executado. Veja também esta resposta para mais informações.

Quando executamos o código acima sem quaisquer argumentos, obtemos o seguinte:

O próximo é FileNotFoundError. Este é bem fácil de resolver: antes de abrir o arquivo, verifique se ele existe usando o módulo de sistema operacional já importado:

O último ValueError pode ser resolvido de várias maneiras. Uma delas seria usar regex na linha atual do arquivo para encontrar quaisquer valores hexadecimais. Assumindo que apenas os valores hexadecimais devem estar em uma linha, torna-se muito mais simples. Poderíamos apenas verificar se a linha começa com 0x (por exemplo, um valor hexadecimal).

A leitura do arquivo também deve ser feita linha por linha como um iterador, para evitar que arquivos grandes travem seu programa devido ao alto consumo de memória. Neste momento, o programa lê todo o texto do arquivo para a memória. Isso pode ser feito conforme descrito na seguinte pergunta:

Colocar isso em uma função própria também evita que você abra o arquivo continuamente.


Não há um comando específico (ou pelo menos, nenhum que eu conheça) para obter essas informações, mas você pode encontrá-lo entre aqueles fornecidos por systeminfo.exe.

Get-UICulture ou Get-Host no PowerShell

Se precisar do local real para fazer outras coisas condicionalmente em um arquivo em lote, você pode criar um arquivo em lote (salvar um arquivo de texto com a extensão .bat) com o seguinte. Como ponto de partida, isso será impresso no prompt de comando, por exemplo, "en-us" (sem aspas). Você também pode usar a variável! VERBOSE_SYSTEM_LOCALE! para o local legível por humanos, por exemplo Inglês dos Estados Unidos)

Na verdade, suas propostas falham, porque dependem da pesquisa de uma string ("Local do sistema") que muda dependendo do local atual! No meu Win10Pro francês, a string é"Option régionale du système"(com letras acentuadas, o que é muito difícil de manusear adequadamente em um arquivo CMD).

Fiz alguns testes e parece, no MEU sistema, que as linhas sobre a localidade na saída do systeminfo são as únicas que contêm um caractere de ponto-e-vírgula (""):


Por que programar Python para hackear

Python é uma linguagem de programação de alto nível e de uso geral amplamente usada. Python é uma linguagem muito simples, mas poderosa linguagem de script, é open-source e orientada a objetos e tem ótimas bibliotecas que podem ser usadas tanto para hackear quanto para escrever programas normais muito úteis que não sejam programas de hack. No futuro e na era atual, o python é muito popular e é fácil de aprender, aprender a hackear com o python será divertido e você aprenderá a programar em python da melhor maneira. Há uma grande demanda por desenvolvedores de python no mercado.

Observação: Para saber mais sobre python clique aqui.


Resumo

O objetivo deste documento é fornecer uma referência rápida para conectar e trocar informações entre dois sistemas. Este documento descreve um processo típico para uma sessão de protocolo de transferência de arquivos (FTP) em lote, interativa ou automatizada, executada em um PC com Windows / 2000 e conectada a um sistema UNIX. Este processo pode variar ligeiramente dependendo das configurações de hardware e software dos sistemas local e remoto.

Este documento pode ser usado como um tutorial para novos programadores ou como uma referência rápida para programadores experientes.

No mundo da programação, existem muitas maneiras de resolver um problema. Esta documentação e software foram desenvolvidos e testados em sistemas configurados para um ambiente SIMOTIME com base no hardware, sistemas operacionais, requisitos do usuário e requisitos de segurança. Portanto, podem ser necessários ajustes para executar os trabalhos e programas quando transferidos para um sistema de uma arquitetura ou configuração diferente.

SIMOTIME Services tem experiência em mover ou compartilhar dados ou processamento de aplicativos em uma variedade de sistemas. Para obter informações adicionais sobre os serviços ou tecnologias da SIMOTIME, entre em contato conosco usando as informações na seção de comentários ou feedback deste documento.

Acordo de software e isenção de responsabilidade

A permissão para usar, copiar, modificar e distribuir este software, documentação ou material de treinamento para qualquer finalidade requer o pagamento de uma taxa à SimoTime Technologies. Assim que a taxa for recebida pela SimoTime, a versão mais recente do software, documentação ou material de treinamento será entregue e uma licença será concedida para uso dentro de uma empresa, desde que o aviso de copyright do SimoTime apareça em todas as cópias do software. O nome ou logotipo SimoTime não pode ser usado em qualquer propaganda ou publicidade relativa ao uso do software sem a permissão por escrito da SimoTime Technologies.

A SimoTime Technologies não oferece nenhuma garantia ou representação sobre a adequação do software, documentação ou material de aprendizagem para qualquer propósito. É fornecido "NO ESTADO EM QUE SE ENCONTRA", sem qualquer garantia expressa ou implícita, incluindo as garantias implícitas de comercialização, adequação a uma finalidade específica e não violação. SimoTime Technologies não será responsável por quaisquer danos diretos, indiretos, especiais ou consequentes resultantes da perda de uso, dados ou projetos, seja em uma ação de contrato ou ato ilícito, decorrentes de ou em conexão com o uso ou desempenho deste software , documentação ou material de treinamento.

Downloads e links

Esta seção inclui links para documentos com informações adicionais que estão além do escopo e do propósito deste documento. O primeiro grupo de documentos pode estar disponível em um sistema local ou por meio de uma conexão com a Internet, o segundo grupo de documentos exigirá uma conexão com a Internet.

Nota: Uma Licença SimoTime é necessária para que os itens sejam disponibilizados em um sistema ou servidor local.

Servidor atual ou acesso à Internet

Os links a seguir podem ser para o servidor atual ou para a Internet.

Nota: As versões mais recentes dos Documentos SimoTime e das suítes de programas estão disponíveis na Internet e podem ser acessadas usando o ícone. Se um usuário tiver uma Licença SimoTime Enterprise, os Documentos e Conjuntos de Programas podem estar disponíveis em um servidor local e acessados ​​usando o ícone.

Explore exemplos de scripts de FTP e arquivos de comando do Windows (FTP) que irão transferir arquivos entre um Mainframe Host System e um Windows Client System.

Explore as alternativas para transferir arquivos de dados entre sistemas. Este link fornece acesso a um repositório de informações que inclui a transferência e / ou compartilhamento de dados entre os sistemas Mainframe (ZOS ou VSE), Linux, UNIX e Windows.

Explore as tabelas de tradução ASCII e EBCDIC. Essas tabelas são fornecidas para indivíduos que precisam entender melhor as estruturas de bits e as diferenças dos formatos de codificação.

Explore os códigos de retorno de status de arquivo para interpretar os resultados do acesso a conjuntos de dados VSAM e / ou arquivos QSAM.

Acesso à Internet necessário

Os links a seguir exigirão uma conexão com a Internet.

Um bom lugar para começar é a página inicial do SimoTime para acesso a white papers, exemplos de programas e informações sobre produtos. Este link requer uma conexão com a Internet

Explore o site da Micro Focus para obter mais informações sobre produtos e serviços disponíveis na Micro Focus. Este link requer uma conexão com a Internet.

Explore as tecnologias GnuCOBOL disponíveis no SourceForge. SourceForge é um recurso da comunidade de código aberto dedicado a ajudar os projetos de código aberto a serem o mais bem-sucedidos possível. GnuCOBOL (anteriormente OpenCOBOL) é um compilador COBOL com suporte em tempo de execução. O compilador (cobc) converte a origem COBOL em executável usando C intermediário, designado compilador C e vinculador. Este link exigirá uma conexão com a Internet.

Glossário de termos

Consulte o Glossário SimoTime para obter uma lista de termos e definições usados ​​nos documentos fornecidos pela SimoTime.

Comentários ou feedback

Este documento foi criado e mantido pela SimoTime Technologies. Se você tiver alguma dúvida, sugestão, comentário ou feedback, use as seguintes informações de contato.

Agradecemos o seu contato.

Visão Geral da Empresa

A SimoTime Technologies foi fundada em 1987 e é uma empresa privada. Somos especializados na criação e implantação de aplicativos de negócios usando tecnologias e serviços novos ou existentes. Temos uma equipe de profissionais que entende a ampla gama de tecnologias que estão sendo usadas nos ambientes de hoje. Nossos clientes incluem pequenas empresas que usam tecnologias de Internet e corporações que usam sistemas de mainframe muito grandes.

Freqüentemente, para alcançar mercados maiores ou fornecer um nível mais alto de serviço aos clientes existentes, é necessário que as tecnologias mais recentes da Internet funcionem de maneira complementar aos sistemas de mainframe corporativos existentes. Somos especializados em preparar aplicativos e os dados associados que atualmente residem em uma única plataforma para serem distribuídos em uma variedade de plataformas.

A preparação dos programas aplicativos exigirá a transferência dos membros de origem que serão compilados e implantados na plataforma de destino. Os dados precisarão ser transferidos entre os sistemas e podem precisar ser convertidos e validados em vários estágios do processo. SimoTime tem a tecnologia, serviços e experiência para auxiliar nas tarefas de gerenciamento de aplicativos e dados envolvidas em fazer negócios em um ambiente de vários sistemas.


Você precisa de um pouco de espaço em branco. Entre os métodos da classe Player, por exemplo, eu adicionaria uma linha em branco. Entre a classe Player e a classe Dragon, eu adicionaria duas linhas em branco. PEP 8, o guia de estilo oficial para Python, concorda: https://www.python.org/dev/peps/pep-0008/#blank-lines.

Em alguns lugares, você usa if option ==. ou opção ==. ou . . Isso é mais longo do que o necessário. Você deve aproveitar em (consulte também https://stackoverflow.com/q/15112125/5827958). Por exemplo:


Aqui está uma solução que não envolve o OpenOffice:

sudo apt-get install enscript

enscript my_text_file.txt -o - | ps2pdf - output.pdf

Existem mais opções para inscrever, por exemplo, -B para omitir o cabeçalho da página. Veja o man enscript para todas as opções.

sem instalar nenhum dos softwares mencionados acima, pode-se simplesmente fazer o seguinte com o cupsfilter já instalado:

(para opções etc., consulte as páginas de manual do cupsfilter :-))

A FORMA DE ENSCRIPT SIMPLES

sudo apt-get install cups-pdf enscript

Em seguida, execute enscript em seu arquivo com a opção -P e o PDF de descrição da impressora neste caso.

Uma impressora com a descrição em PDF foi criada quando você instalou o cups-pdf, quando você usa enscript com essa impressora seu documento será enviado para a impressora PDF e será impresso em um arquivo, criado como .pdf em seu diretório / home / PDF, o comando acima imprimirá o arquivo de texto test.txt como um pdf no diretório PDF.

USANDO UNOCONV

Você pode usar o unoconv no modo autônomo, isso significa que, na ausência de um ouvinte do OpenOffice, ele iniciará o seu próprio:


Fim de arquivo

As terminações de arquivo fornecem ao usuário e ao sistema um indicador sobre o conteúdo de um arquivo. As terminações de arquivo razoáveis ​​para arquivos de configuração são

  • * config.py para arquivos Python
  • * .yaml ou * .yml se a configuração for feita no formato YAML
  • * .json para arquivos de configuração escritos no formato JSON
  • * .cfg ou * .conf para indicar que é um arquivo de configuração
  • * .ini para "inicialização" são bastante difundidos (veja o Wiki)

Dito isso, acho que prefiro * .conf. Acho que é uma escolha que os usuários entendem.

Mas você também pode considerar que * .ini pode ser aberto por padrão em um editor de texto. Para as outras opções, os usuários podem ser questionados sobre qual programa desejam usar.