spcl Posted October 12, 2013 at 01:57 AM Report #528635 Posted October 12, 2013 at 01:57 AM bom dia, Estou aqui com um problema apenas de estudo, ja procurei por muito lado e sinceramente não sei se e possível ou não fazer o seguinte: tenho um ficheiro externo ex: asd.asd com o conteúdo texto aleatorio ... start print "asd" end texto aleatório ... o que eu queria era depois noutro ficheiro este sim em python pegar o tal de asd.asd e escrever tudo normalmente como um print, excepto o que esta entre start e end, aqui o que eu queria fazer era executar o que estava entre os dois, isto e possível fazer? sem framework nem nada?
thoga31 Posted October 12, 2013 at 03:56 PM Report #528667 Posted October 12, 2013 at 03:56 PM Sim, é possível. Virtualmente tudo é possível na informática. Neste caso podias fazer uma contagem de "start" e "end" e mostrar os conteúdos entre "end" e "start" e deixar de lado o que estava entre "start" e "end" para um parser. Knowledge is free!
Pedro C. Posted October 12, 2013 at 04:39 PM Report #528672 Posted October 12, 2013 at 04:39 PM (edited) Pois. O python tem regras de sintaxe para identação por exemplo. É a unica coisa que identifica o que está dentro dos blocos de ciclos ou ifs, por exemplo. No teu ficheiro original essas regras já estão inseridas? Se não tiverem então tens um problema sério. Por exemplo: i=1 while i < 10: i = i + 1 print i Posso imaginar isto a aparecer assim (entre outras formulações possíveis, nomeadamente nos espaços): i=1 while i <10: i=i+1 print i O que poderia ser o código inicial ou: i=1 while i < 10: i = i + 1 print i Onde o print ficou fora do bloco do while. Se já tiveres as regras inseridas lá: i=1\nwhile i <10:\n\t i=i+1\n\tprint i\n Onde o "\n" significaria mudança de linha e "\t" o espaço da tecla "tab" (não me lembro do nome disto e sinceramente não sei se o "\t" é o símbolo indicado) poderias fazer cópia directa para uma folha de script e corre-lo. Outra opção é controlares os significados dos blocos controlando os símbolos no teu ficheiro de texto (como se faz em C, Java, bem..., praticamente todas as linguagens excepto Python), melhor dizendo, metendo um símbolo de começo e fim de bloco que sabes que não vai aparecer no código (ex: $ para começo de bloco, ! para fim. Digo estes porque nunca me lembro de os ter usado em código...). Podes exemplificar uma porção do teu ficheiro de texto que tens de processar (se conseguires deixa que a citação traga também os símbolos de instrução). Para fazeres isto lê o teu ficheiro para dentro de uma string em Python e cita essa string aqui (acho que assim aparece tudo). Edited October 12, 2013 at 04:42 PM by Pedro C.
Dr_Lion Posted October 12, 2013 at 06:44 PM Report #528679 Posted October 12, 2013 at 06:44 PM Resumindo, isso que queres é basico de fazer logo depois de descobrires como vais ter um ficheiro "asd.asd" que mantenha as quebras de linha e tabulações/espaços nas linhas de código que tens perdidas pelo meio do ficheiro.
KTachyon Posted October 12, 2013 at 10:48 PM Report #528696 Posted October 12, 2013 at 10:48 PM Penso que com alguns truques deves poder adicionar funções a uma classe em Python utilizando o setattr(), ficheiros temporários e imports em runtime. Alternativamente, com ficheiros temporários e execfile() também deves conseguir obter resultados. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
spcl Posted October 12, 2013 at 11:06 PM Author Report #528697 Posted October 12, 2013 at 11:06 PM muito obrigado a todos, vou dar uma vista de olhos para ver se e isto mesmo o que eu procurava na verdade o que procurava era algo para fazer uma função em python para trabalhar "facilmente" em web sem frameworks, uma especie de um include que executasse logo todo o código ex: funcname(file.format) isto dentro do arquivo principal no file.format o que teria era algo como o Pedro C disse, uma simulação de ficheiro estilo php em que quando queria iniciar código python digitava ex <?py e fechava com ?> algo assim, o que tivesse neste ficheiro fora disto era imprimido normalmente como html, o que tivesse dentro aqui sim tinha de manter as tais quebras de linha e ao mesmo tempo executar os códigos, como consultas de bd, prints de variáveis trabalhadas em cima... obrigado
KTachyon Posted October 12, 2013 at 11:57 PM Report #528701 Posted October 12, 2013 at 11:57 PM Mas para isso tens uma série de template engines disponíveis, como a Mako, a Genshi ou a Jinja. Existem dezenas, é uma questão de escolheres a que mais te agrada. “There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.” -- Tony Hoare
Pedro C. Posted October 16, 2013 at 02:55 PM Report #529222 Posted October 16, 2013 at 02:55 PM Bem, podes tentar o mais simples: In [13]: a= 'qwrqrf\n\tfdsfadg\n\nfsdfasd\tfsdfew\tstart\codigopython\nstop' In [14]: a.index('start') Out[14]: 32 In [15]: a.index('stop') Out[15]: 51 In [16]: len('start') Out[16]: 5 In [17]: a[32+5:51] Out[17]: '\\codigopython\n'
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now