Olá Amigos!!
Como eu faria para trocar uma string dentro de um arquivo?
Seria possível fazer isto? Mesmo que a string a ser trocada esteja lá
pelo meio do arquivo?
Obrigado pela a ajuda a este mísero iniciante...
Abraços
Fabiano Garcia Fonseca
www.linuxacessivel.org
$ sed -i 's/STRING_ANTIGA/STRING_NOVA/g' NOMEDOARQUIVO
Em python eu faria algo do tipo:
>>> fp = open('arquivo', 'r')
>>> conteudo = fp.read()
>>> fp.close()
>>> string_nova = conteudo.replace('antigo', 'novo')
>>> fp = open('arquivo', 'w')
>>> fp.write(string_nova)
>>> fp.close()
PS.: Esse código python provavelmente pode ser reduzido.
2010/9/2 Fabiano Garcia Fonseca <fabia...@gmail.com>
>
>
>
> Olá Amigos!!
>
> Como eu faria para trocar uma string dentro de um arquivo?
> Seria possível fazer isto? Mesmo que a string a ser trocada esteja lá
> pelo meio do arquivo?
>
> Obrigado pela a ajuda a este mísero iniciante...
>
> Abraços
> Fabiano Garcia Fonseca
> www.linuxacessivel.org
>
>
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
dá uma olhada na função sub
Em 2 de setembro de 2010 09:55, Denis Costa <denisc...@gmail.com>escreveu:
> Eu sou fã de Regex, então usaria as ferramentas do módulo re
>
> Procura na documentação do Python o howto-regex
>
> Em 2 de setembro de 2010 03:29, Fabiano Garcia Fonseca <
> fabia...@gmail.com> escreveu:
>
>
>>
>> Olá Amigos!!
>>
>> Como eu faria para trocar uma string dentro de um arquivo?
>> Seria possível fazer isto? Mesmo que a string a ser trocada esteja lá
>> pelo meio do arquivo?
>>
>> Obrigado pela a ajuda a este mísero iniciante...
>>
>> Abraços
>> Fabiano Garcia Fonseca
>> www.linuxacessivel.org
>>
>>
>>
>
>
>
> --
> Denis Silva Costa
> Ubuntu User: #31758
> Linux User: #516577
> http://shellscript4all.blogspot.com
> "A paz não brota em um jardim com câmera e sensores..."
>
--
Denis Silva Costa
Ubuntu User: #31758
Linux User: #516577
http://shellscript4all.blogspot.com
"A paz não brota em um jardim com câmera e sensores..."
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
Mas o que acha mais interessante, executar um sed de denro do sistema em
python ou fazer o que indicou com o replace?
Hugo Lopes Tavares escreveu:
> Uma maneira muito simples � armazenar o conte�do do arquivo, usar um
> .replace() e escrever o resultado de volta no arquivo.
> Mas se voc� s� precisa disso, n�o vale nem a pena abrir o
> interpretador python, use o `sed`.
>
> $ sed -i 's/STRING_ANTIGA/STRING_NOVA/g' NOMEDOARQUIVO
>
> Em python eu faria algo do tipo:
>>>> fp = open('arquivo', 'r')
>>>> conteudo = fp.read()
>>>> fp.close()
>>>> string_nova = conteudo.replace('antigo', 'novo')
>>>> fp = open('arquivo', 'w')
>>>> fp.write(string_nova)
>>>> fp.close()
> PS.: Esse c�digo python provavelmente pode ser reduzido.
>
> 2010/9/2 Fabiano Garcia Fonseca<fabia...@gmail.com>
>>
>>
>> Ol� Amigos!!
>>
>> Como eu faria para trocar uma string dentro de um arquivo?
>> Seria poss�vel fazer isto? Mesmo que a string a ser trocada esteja l�
>> pelo meio do arquivo?
>>
>> Obrigado pela a ajuda a este m�sero iniciante...
>>
>> Abra�os
>> Fabiano Garcia Fonseca
>> www.linuxacessivel.org
>>
>>
>
> ------------------------------------
>
> ,-----------------------------------------------------------.
> | Antes de enviar um e-mail para o grupo leia: |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
> | E se voc� � usu�rio do BOL lembre-se de cadastrar o |
> | e-mail do grupo na lista branca do seu sistema anti-spam. |
> `-----------------------------------------------------------�Links do Yahoo! Grupos
>
>
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se voc� � usu�rio do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------�Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que voc� faz do Yahoo! Grupos est� sujeito aos:
http://br.yahoo.com/info/utos.html
On Sep 2, 2010, at 11:50 AM, Fabiano Garcia Fonseca wrote:
> Eu não preciso só disso, essa substituição, é apenas parte de um sistema.
> Mas penso que usando o sed seja mais prático e rápido.
>
> Mas o que acha mais interessante, executar um sed de denro do sistema em
> python ou fazer o que indicou com o replace?
O sed faz muito mais do que um simples replace, se é o que tu precisa tudo bem. Agora esse replace no python diminui a dependencia do sistema em ferramentas unix que podem não exitir depois.
--
Leonardo Santagada
santagada at gmail.com
Leonardo Santagada escreveu:
On Sep 2, 2010, at 11:50 AM, Fabiano Garcia Fonseca wrote:
> Eu não preciso só disso, essa substituição, é apenas parte de um sistema.
> Mas penso que usando o sed seja mais prático e rápido.
>
> Mas o que acha mais interessante, executar um sed de denro do sistema em
> python ou fazer o que indicou com o replace?
O sed faz muito mais do que um simples replace, se é o que tu precisa
tudo bem. Agora esse replace no python diminui a dependencia do sistema
em ferramentas unix que podem não exitir depois.
--
Leonardo Santagada
santagada at gmail.com
Leonardo, conheço bem o comando sed e sei dos seus recursos.
Quanto a questão do sistema ficar dependente do Unix, não me preocupo
muito, pois ele só irá e só servirá para rodar no Ubuntu.
Então vou de sed mesmo.
Valeu!!!!
Fabiano Garcia Fonseca
www.linuxacessivel.org
[As partes desta mensagem que não continham texto foram removidas]
O caso é bem simples, uma alteração dentro de um arquivo. Você
provavelmente terá menos problemas no futuro usando python, tanto pra
testar o funcionamento, quanto pra debugar. É uma tarefa simples.
[]s
2010/9/2 Fabiano Garcia Fonseca <fabia...@gmail.com>
>
>
>
> Leonardo Santagada escreveu:
>
> On Sep 2, 2010, at 11:50 AM, Fabiano Garcia Fonseca wrote:
>
> > Eu não preciso só disso, essa substituição, é apenas parte de um sistema.
> > Mas penso que usando o sed seja mais prático e rápido.
> >
> > Mas o que acha mais interessante, executar um sed de denro do sistema em
> > python ou fazer o que indicou com o replace?
>
> O sed faz muito mais do que um simples replace, se é o que tu precisa
> tudo bem. Agora esse replace no python diminui a dependencia do sistema
> em ferramentas unix que podem não exitir depois.
>
> --
> Leonardo Santagada
> santagada at gmail.com
>
> Leonardo, conheço bem o comando sed e sei dos seus recursos.
>
> Quanto a questão do sistema ficar dependente do Unix, não me preocupo
> muito, pois ele só irá e só servirá para rodar no Ubuntu.
>
> Então vou de sed mesmo.
>
> Valeu!!!!
>
> Fabiano Garcia Fonseca
> www.linuxacessivel.org
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html
Vamos de python ent�o...
Sou iniciante e n�o quero come�ar aprendendo da forma errada ou menos
elegante.
Abra�os
fabiano Garcia Fonseca
www.linuxacessivel.org
Hugo Lopes Tavares escreveu:
Eu, particularmente, n�o gosto de usar chamadas do shell dentro do
python. Se eu puder evitar, evito.
Acho que voc� deveria fazer o mesmo :)
O caso � bem simples, uma altera��o dentro de um arquivo. Voc�
provavelmente ter� menos problemas no futuro usando python, tanto pra
testar o funcionamento, quanto pra debugar. � uma tarefa simples.
[]s
2010/9/2 Fabiano Garcia Fonseca<fabia...@gmail.com>
>
>
> Leonardo Santagada escreveu:
>
> On Sep 2, 2010, at 11:50 AM, Fabiano Garcia Fonseca wrote:
>
>
>> Eu n�o preciso s� disso, essa substitui��o, � apenas parte de um sistema.
>> Mas penso que usando o sed seja mais pr�tico e r�pido.
>>
>> Mas o que acha mais interessante, executar um sed de denro do sistema em
>> python ou fazer o que indicou com o replace?
>>
> O sed faz muito mais do que um simples replace, se � o que tu precisa
> tudo bem. Agora esse replace no python diminui a dependencia do sistema
> em ferramentas unix que podem n�o exitir depois.
>
> --
> Leonardo Santagada
> santagada at gmail.com
>
> Leonardo, conhe�o bem o comando sed e sei dos seus recursos.
>
> Quanto a quest�o do sistema ficar dependente do Unix, n�o me preocupo
> muito, pois ele s� ir� e s� servir� para rodar no Ubuntu.
>
> Ent�o vou de sed mesmo.
>
> Valeu!!!!
>
> Fabiano Garcia Fonseca
> www.linuxacessivel.org
>
> [As partes desta mensagem que n�o continham texto foram removidas]
>
>
>
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se voc� � usu�rio do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------�Links do Yahoo! Grupos
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se voc� � usu�rio do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------�Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que voc� faz do Yahoo! Grupos est� sujeito aos:
http://br.yahoo.com/info/utos.html
Olá,
Utilizar uma alternativa em python é interessante mas se a idéia é somente a plataforma *nix (tem versão para win32 também) não vejo nenhum problema visto que duas das filosofias unix são:
- "Faça programas que façam apenas uma coisa e façam bem feito"
- "Faça programas que se comuniquem com outros programas"
E o 'sed' segue esta filosofia, você pode ter um controle muito bom trabalhando com pipes e capturando o código de retorno (com o módulo subprocess) você não terá um debbug integrado, mas saberá quando o problema será o sed e poderá debugá-lo separadamente preferir.
Faço isso diariamente e nunca encontrei nenhum problema, mas quando a tarefa que estou fazendo não está diretamente ligada ao sistema operacional ou controle do mesmo dou preferência a bibliotecas compartilhadas ou alternativas em python mesmo.
Abraços.
--- Em qui, 2/9/10, Fabiano Garcia Fonseca <fabia...@gmail.com> escreveu:
> De: Fabiano Garcia Fonseca <fabia...@gmail.com>
> Assunto: Re: [python-brasil] Substituir string em arquivo
> Para: python...@yahoogrupos.com.br
> Data: Quinta-feira, 2 de Setembro de 2010, 16:09
> Bom, se assim sugere...
>
> Vamos de python então...
>
> Sou iniciante e não quero começar aprendendo da forma
> errada ou menos
> elegante.
> Abraços
>
> fabiano Garcia Fonseca
> www.linuxacessivel.org
>
>
> Hugo Lopes Tavares escreveu:
>
> Eu, particularmente, não gosto de usar chamadas do shell
> dentro do
> python. Se eu puder evitar, evito.
> Acho que você deveria fazer o mesmo :)
>
> O caso é bem simples, uma alteração dentro de um
> arquivo. Você
> provavelmente terá menos problemas no futuro usando
> python, tanto pra
> testar o funcionamento, quanto pra debugar. É uma tarefa
> simples.
>
> []s
>
> 2010/9/2 Fabiano Garcia Fonseca<fabia...@gmail.com>
>
> >
> >
> > Leonardo Santagada escreveu:
> >
> > On Sep 2, 2010, at 11:50 AM, Fabiano Garcia Fonseca
> wrote:
> >
> >
> >> Eu não preciso só disso, essa substituição, é
> apenas parte de um sistema.
> >> Mas penso que usando o sed seja mais prático e
> rápido.
> >>
> >> Mas o que acha mais interessante, executar um sed
> de denro do sistema em
> >> python ou fazer o que indicou com o replace?
> >>
> > O sed faz muito mais do que um simples replace, se é
> o que tu precisa
> > tudo bem. Agora esse replace no python diminui a
> dependencia do sistema
> > em ferramentas unix que podem não exitir depois.
> >
> > --
> > Leonardo Santagada
> > santagada at gmail.com
> >
> > Leonardo, conheço bem o comando sed e sei dos seus
> recursos.
> >
> > Quanto a questão do sistema ficar dependente do Unix,
> não me preocupo
> > muito, pois ele só irá e só servirá para rodar no
> Ubuntu.
> >
> > Então vou de sed mesmo.
> >
> > Valeu!!!!
> >
> > Fabiano Garcia Fonseca
> > www.linuxacessivel.org
> >
> > [As partes desta mensagem que não continham texto
> foram removidas]
> >
> >
> >
>
> ------------------------------------
>
> ,----------------------------------------------------------.
> | Antes de enviar um e-mail para o grupo leia:
> |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar
> |
> | E se você é usuário do BOL lembre-se de cadastrar
> o |
> | e-mail do grupo na lista branca do seu sistema anti-spam.
> |
> `----------------------------------------------------------´Links
> do Yahoo! Grupos
>
>
>
>
>
>
> ------------------------------------
>
> ,----------------------------------------------------------.
> | Antes de enviar um e-mail para o grupo leia:
> |
> | http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar
> |
> | E se você é usuário do BOL lembre-se de cadastrar
> o |
> | e-mail do grupo na lista branca do seu sistema anti-spam.
> |
> `----------------------------------------------------------´Links
> do Yahoo! Grupos
>
>
>
>
2010/9/2 Allison Vollmann <allis...@yahoo.com.br>:
> Olá,
>
> Utilizar uma alternativa em python é interessante mas se a idéia é somente a plataforma *nix (tem versão para win32 também) não vejo nenhum problema visto que duas das filosofias unix são:
> - "Faça programas que façam apenas uma coisa e façam bem feito"
> - "Faça programas que se comuniquem com outros programas"
>
> E o 'sed' segue esta filosofia, você pode ter um controle muito bom trabalhando com pipes e capturando o código de retorno (com o módulo subprocess) você não terá um debbug integrado, mas saberá quando o problema será o sed e poderá debugá-lo separadamente preferir.
>
> Faço isso diariamente e nunca encontrei nenhum problema, mas quando a tarefa que estou fazendo não está diretamente ligada ao sistema operacional ou controle do mesmo dou preferência a bibliotecas compartilhadas ou alternativas em python mesmo.
Eu desrecomendo com -2 misturar outros comandos do shell de dentro do Python.
1) Python _é_ multiplataforma por natureza, e quebrar isso ativamente
é bem pouco esperto -- você pode não estar pensando hoje nisso, ams
amanhã pode haver necessidade de portar seus sistema para outro lugar.
2) Velocidade: uma coisa é uma única chamadfa de substituição de um
arquivo - um script para isso poderia ser mais fácil em sed, as se faz
parte de ums istema maior, o fato de você ter que iniciar outro
processo para usar o sed faz diferença
3) Mantenebilidade: Se você faz de dentro do python usa sintaxe e
chamadas que são familiares para qualquer um que vá ver seu código no
futuro : a pessoa só vai precisar saber python. Neste caso, por mais
que o autor esteja familiarizado, sed é toda uma outra linguagem, e
com uma das sintaxes menos intuitivas que existem em toda os comandos
disponíveis em shell script.
A "filosofia unix" tem seu lugar e sua hora - mas querer que um
sistema em python não possa susbstituir uma string num arquivo sem
recorrer a processos externos tem outro nome. A "filosofia Unix" tem
seu lugar na T.I. hoje por exemplo pra voce fazer sistemas como o
mercurial, ou o ffmpeg, sem uma interface acoplada, e depois fazer
projetos como o tortoise, e mplayer, que funcionam como interfaces pra
esse cara.
mas escrever em arquivos, consutlas a banco, acessos a dados em rede,
são partes triviais de um programa. Python não é shell script.
js
-><-
--- Em sex, 3/9/10, Joao S. O. Bueno <jsb...@python.org.br> escreveu:
Referente ao item 1, python é multiplataforma sim, mas o sed também pode ser considerado, você pode compilá-lo para qualquer plataforma que possua um compilador C e suporte o padrão ANSI.
Referente ao item 2, o sed é bem leve e tem um ótimo gerenciamento de memória, para você por exemplo fazer uma substituição de strings (ou algo mais complexo) em um arquivo muito grande você encontraria este problema em python e teria que apelar para as chamadas de io de baixo nível para ter um desempenho aceitavel com pure python, e não ficaria "bonito" e nem "legível".
Referente ao item 3, este é o ponto crucial, por isso levantei que só justificaria o uso do sed para um caso bem específico. Sempre é preferível alternativas built-in ou pure python.
Lógico que você não vai inserir uma dependência externa no script apenas para substituir uma string, mas utilizando o sed você terá a mão todos os seus recursos e vantagens, se for um ponto crítico do sistema é aceitável avaliar a opção
Ah, e python também pode ser usada como linguagem de scripting (se não me engano surgiu com esse propósito), e é muito bem aceita desta forma também, então pode ser utilizada sim ao invés de bash script.
Não quero levantar uma flamewar, só estou querendo informar que não devemos desconsiderar uma opção sem ter conhecimento exato do que o nosso colega pretende fazer.
A[]'s
Allison Vollmann escreveu:
>
>
> --- Em sex, 3/9/10, Joao S. O. Bueno <jsb...@python.org.br
> <mailto:jsbueno%40python.org.br>> escreveu:
>
>
> Referente ao item 1, python é multiplataforma sim, mas o sed também
> pode ser considerado, você pode compilá-lo para qualquer plataforma
> que possua um compilador C e suporte o padrão ANSI.
>
> Referente ao item 2, o sed é bem leve e tem um ótimo gerenciamento de
> memória, para você por exemplo fazer uma substituição de strings (ou
> algo mais complexo) em um arquivo muito grande você encontraria este
> problema em python e teria que apelar para as chamadas de io de baixo
> nível para ter um desempenho aceitavel com pure python, e não ficaria
> "bonito" e nem "legível".
>
> Referente ao item 3, este é o ponto crucial, por isso levantei que só
> justificaria o uso do sed para um caso bem específico. Sempre é
> preferível alternativas built-in ou pure python.
>
> Lógico que você não vai inserir uma dependência externa no script
> apenas para substituir uma string, mas utilizando o sed você terá a
> mão todos os seus recursos e vantagens, se for um ponto crítico do
> sistema é aceitável avaliar a opção
>
> Ah, e python também pode ser usada como linguagem de scripting (se não
> me engano surgiu com esse propósito), e é muito bem aceita desta forma
> também, então pode ser utilizada sim ao invés de bash script.
>
> Não quero levantar uma flamewar, só estou querendo informar que não
> devemos desconsiderar uma opção sem ter conhecimento exato do que o
> nosso colega pretende fazer.
>
> A[]'s
>
********
Bom, não quero ser o causador de polêmicas aqui na lista, e informo que
já resolvi meu problema, usando Python e que o resultado foi excelente e
rápido.
mas creio que valeu a discussão...
E logo retorno com minhas dúvidas de principiante.
Obrigado a todos pela ajuda.
Abraços
Fabiano Garcia Fonseca
www.linuxacessivel.org
Em 3 de setembro de 2010 10:02, Fabiano Garcia Fonseca <fabia...@gmail.com
> escreveu:
>
>
> Allison Vollmann escreveu:
>
> >
> >
> > --- Em sex, 3/9/10, Joao S. O. Bueno <jsb...@python.org.br<jsbueno%40python.org.br>
> > <mailto:jsbueno%40python.org.br <jsbueno%2540python.org.br>>> escreveu:
--
Denis Silva Costa
Ubuntu User: #31758
Linux User: #516577
http://shellscript4all.blogspot.com
"A paz não brota em um jardim com câmera e sensores..."
[As partes desta mensagem que não continham texto foram removidas]
------------------------------------
,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos
<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/
<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br
<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html