0

データを取得してファイルに書き込むための単純な python スクリプトを作成しようとしています。(ソースは urllib2 を使用したカールです)。

私のスクリプト:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os, sys
import urllib2

pid = str(os.getpid())
pidfile = "/tmp/requisicoes.pid"

if os.path.isfile(pidfile):
    print "%s Coleta de requisições já esta rodando." % pidfile
    sys.exit()
else:
    file(pidfile, 'w').write(pid)

url = 'https://*******/quest_history.pl?GRAFICO=Grupo+Resolvedor&FORMATPERIOD=dia&PERIODO=last_year&REFGRAFICO=Termino&REFMETRICA=qtde&TABELA=0&FORMAT=csv&Numero=Tudo&Subcategoria=Tudo&Produto=Tudo&Grupo+Resolvedor=Tudo&Resolvedor=Tudo&Solicitante=Tudo&Unidade+Negocio=Tudo&Customer=Tudo&Origem=Tudo&Data+fechamento=Tudo&Data+abertura=Tudo&Rejeicoes=Tudo&Data+Abertura=Tudo&Data+Termino=Tudo&Data+Abertura+Call=Tudo&Call=Tudo&Tempo+de+Fila=Tudo&Tempo+de+Resolucao=Tudo&Rejeitado=Tudo&Tempo+de+Rejeicao=Tudo&Tempo+de+Abertura=Tudo&Categorizacao=Tudo&Site=Tudo&Grupo+de+Origem=Tudo&Cliente=Tudo&CNPJ=Tudo&Grupo+de+Clientes=Tudo&Tempo+para+resolucao=Tudo&Tempo+para+fechamento=Tudo&Tecnologia=Tudo&Papel+desempenhado=Tudo&Tempo+de+Resolucao+em+dias=Tudo'

curlreq = urllib2.urlopen(url)

curlresult = curlreq.read()

anocsv = open('/tmp/csvano.csv', 'wb')

anocsv.write(curlresult)

anocsv.close()

os.unlink(pidfile)

私のスクリプトはファイル /tmp/csvano.csv を返します

Numero;Subcategoria;Produto;Grupo Resolvedor;Resolvedor;Solicitante;Unidade Negocio;Customer;Origem;Data fechamento;Data abertura;Rejeicoes;Data Abertura;Data Termino;Data Abertura Call;Call;T      empo de Fila;Tempo de Resolucao;Rejeitado;Tempo de Rejeicao;Tempo de Abertura;Categorizacao;Site;Grupo de Origem;Cliente;CNPJ;Grupo de Clientes;Tempo para resolucao;Tempo para fechamento;Tecno      logia;Papel desempenhado;Tempo de Resolucao em dias;                                                                                                                                            
Q***;ouvidoria;dbi [tecnologia - falha tecnica operacao];ouvidoria;****;*** LTDA;***;***;Diretamente pelo       solicitante;17/07/2013 10:38:54 ;11/07/2013 16:31:38 ;;11/07/2013 16:31:38 ;17/07/2013 10:38:54 ;11/07/2013 16:31:37;CALL2259914;138.12;138.12;Nao;;0.00;ouvidoria/dbi [tecnologia - falha tecn      ica operacao];unknown;;***;09.468.079/0001-54;Outros clientes;de 5 a 6 dias;0;Nao;Areas externas a tecnologia;3;
Q***;hosting;usuario [criacao];n1-operacao;****;SERVICE;*****;***;via Service Desk;15/01/2013 17:18:39 ;15/01/2013 08:55:35 ;;15/01/2013 08:      55:35 ;15/01/2013 17:18:39 ;15/01/2013 08:54:00;CALL1914127;8.38;8.38;Nao;;0.03;hosting/usuario [criacao];unknown;;***;09.296.295/0001-60;Clientes Premium;de 8       a 9 horas;81.66;Nao;Areas externas a tecnologia;1;
Q***;email;folha - contato [alteracao];ti;****;****;****;***;via Service Desk;01/03/2013 18:12:41 ;01/03/2013 17:07:40 ;;01/03/2013 17:07:40 ;01/      03/2013 18:12:41 ;01/03/2013 17:07:39;CALL2000649;1.08;1.08;Nao;;0.00;email/folha - contato [alteracao];unknown;;***;;***;de 1 a 2 horas;0;Nao;Areas externas a tecnologia;1;

しかし、私はこのエンコードJanu<el>rio, Jo<c3>oでいくつかの出力を取得し、これを解決する必要があります..

何か案が?

4

1 に答える 1

0

最後に、私の問題の解決策を見つけました。

ファイルが受信されたエンコーディングが欠落しており、utf8 への変更が欠落していました

この行を追加するだけです anocsv.write(curlresult.decode('iso8859-1').encode('utf-8'))

于 2013-08-22T20:11:03.553 に答える