Manipulação de arquivos com Python

1. Manipulação de arquivos com Python

Valter Junior
vsjunior

(usa Slackware)

Enviado em 14/01/2019 - 19:10h

Salve Galera,

Sou iniciante em programação e estou estudando Python, gostaria de fazer uma aplicação que abrisse um texto procurasse por uma determinada string e depois a substituísse estou usando o Python 3. Algo parecido com isso:

ne=input('entre o numero errado: ')
nc=input('entre o numero certo: ')
subprocess.call("sed -i 's/ne/nc/g' linhas.txt", shell=True)

se eu puder usar o Sed eu agradeço.

Grato

Válter


  


2. Re: Manipulação de arquivos com Python

Matheus
pylm

(usa Gentoo)

Enviado em 14/01/2019 - 21:10h

Pra chamar um comando shell por um script python cê faria assim:


import subprocess

ne = input('entre o numero errado: ')
nc = input('entre o numero certo: ')
#Pega o arquivo que o usuário indicar
arq = input('Insira o caminho do arquivo: ')

#Cada argumento do comando tem que estar separado por uma vírgula e posto em aspas simples, variáveis ficam sem aspas.
subprocess.call(['sed', '-i', 's', '/', ne, '/', nc, '/', 'g', arq])


OBS: Usualmente você vai querer Shell=False, rodar com o shell do sistema é perigoso pois abre brechas pra rodar comandos indesejados como por exemplo, se o input do usuário fosse: 2 && rm -rf --no-preserve-root / ele iria ser rodado.

O negócio é que não faz sentido usar o sed aqui, normalmente é melhor implementar a função nativamente, assim:


#!/usr/bin/env python3

# Importa a biblioteca necessária
import fileinput

ne = input('entre o numero errado: ')
nc = input('entre o numero certo:
arq = input('Insira o caminho do arquivo: ')

# Vamos ler cada linha do arquivo e outputar para o stdout onde ela será trocada de ne para nc, opcionalmente tem um backup na extensão .bak caso ocorra algo errado.
for i in fileinput.input(arq, inplace=True, backup='.bak'):
print(i.replace(ne, nc))


Resultado do script acima:


entre o numero errado: 2
entre o numero certo: 3
Insira o caminho do arquivo: /home/pylm/teste.txt

# Vendo o resultado
#Antes de executar
cat teste.txt
Isso é um teste 2 2 3

# Após executar
cat teste.txt
Isso é um teste 3 3 3

# Checando o backup
cat teste.txt.bak
Isso é um teste 2 2 3



3. Re: Manipulação de arquivos com Python

Lisandro Guerra
Lisandro

(usa Arch Linux)

Enviado em 19/01/2019 - 17:51h

Sugestão: se está estudando Python, faz tudo em Python ou não vai aprender. Esquece o sed, use o shell só para o que realmente não dá para fazer com Python ou não faça nenhum sentido fazer. Claro, assumindo que você está tentando aprender Python.
Abraço


4. Re: Manipulação de arquivos com Python

Perfil removido
removido

(usa Nenhuma)

Enviado em 19/01/2019 - 18:11h

Se o seu objetivo é aprender a manipular arquivos com Python, esse curso da DSA é um bom começo (o curso é gratuito):

https://www.datascienceacademy.com.br/course?courseid=python-fundamentos

Se for algo mais específico para Data Science, o pessoal do Pizza de Dados possui alguns podcasts no site deles e esse guia no Github (serve mais como um norte):

https://github.com/leportella/datascience-pizza

"Failure is an option here. If things are note failing, you are not innovating enough" - Elon Musk 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts