Rafael, boa tarde. Eu partia do pressuposto que seu arquivo estava organizado da seguinte maneira:
nome, valor
camiseta, 25.0
jaqueta, 125.0
tenis, 80.0
bermuda, 40.0
E estando ele dessa forma, o código anterior obteria o resultado desejado. Uma vez que o next faria com que a primeira linha(nome, valor) fosse ignorada.
Porém, como o seu arquivo está organizado da seguinte forma:
nome, valor camiseta, 25.0 jaqueta, 125.0 tenis, 80.0 bermuda, 40.0
Teremos que partir para outra abordagem. Não será necessário utilizar o next.
A primeira mudança que será feita, é em relação ao delimitador do retorno do arquivo, que agora será um espaço.
def ler_produtos(arquivo):
arquivo_aberto = open(arquivo, 'r')
return csv.reader(arquivo_aberto, delimiter=' ')
Dessa forma, iremos obter separadamente cada palavra daquela linha. Exemplo:
[['nome,', 'valor', 'camiseta,', '25.0', 'jaqueta,', '125.0', 'tenis,', '80.0', 'bermuda,', '40.0']]
Agora, podemos percorrer essa lista e ignorar o primeiro e o segundo elemento que são: nome,(posicao 0 da lista) e valor(posicao 1 da lista).
E observe que no resultado acima, possuímos algumas vírgulas indesejadas, como por exemplo em: 'camiseta,'. Para lidar com isso, podemos utilizar o método replace, substituindo a vírgula por um "nada".
Em código fica da seguinte forma:
item_valor = 0
for dado in dados:
qtd_de_itens_na_linha = len(dado)
for item in range(qtd_de_itens_na_linha):
if item > 1:
if item_valor == 0:
print(dado[item].replace(',',''), end=" ")
item_valor += 1
elif item_valor == 1:
print(dado[item].replace(',',''), end="\n")
item_valor = 0
A variável item_valor serve apenas como controle para que possamos printar nome do produto e o preço em uma mesma linha. A ideia é: printou o nome do produto, então dê um espaço(end=" ") e no próximo item printe o valor e dê uma quebra de linha(end="\n").
Resultado:
camiseta 25.0
jaqueta 125.0
tenis 80.0
bermuda 40.0
Código completo:
import csv
import os
def verificar_arquivo():
caminho = 'arquivo/produtos'
arquivo = caminho + '/dados.csv'
if not os.path.exists(caminho):
os.makedirs(caminho)
elif not os.path.isdir(caminho):
raise IOError(caminho + ' não é um diretório !')
if not os.path.exists(arquivo):
open(arquivo, 'w')
return arquivo
def ler_produtos(arquivo):
arquivo_aberto = open(arquivo, 'r')
return csv.reader(arquivo_aberto, delimiter=' ')
arquivo = verificar_arquivo()
dados = ler_produtos(arquivo)
item_valor = 0
for dado in dados:
qtd_de_itens_na_linha = len(dado)
for item in range(qtd_de_itens_na_linha):
if item > 1:
if item_valor == 0:
print(dado[item].replace(',',''), end=" ")
item_valor += 1
elif item_valor == 1:
print(dado[item].replace(',',''), end="\n")
item_valor = 0
Vale ressaltar que tivemos que partir para uma abordagem mais verbosa devido a forma como os dados no seu arquivo csv estão organizados. Caso eles estivessem organizados em coluna(da forma como eu imaginei) , a primeira abordagem seria suficiente.
Outro detalhe é em relação a caso não exista o caminho, pois como será feito a criação o arquivo dados.csv estará vazio e isso pode levar seu código a ter erros silenciosos. O que eu o recomendo fazer é caso não exista o caminho, lance uma exceção falando que aquele caminho não existe. Forçando que a pessoa o crie e alimente a planilha de dados.csv. Tudo bem?!