Estou tentando depurar um aplicativo da web criado por outra pessoa. O aplicativo deve analisar um arquivo de texto contendo linhas que representam pontos de passagem geográficos em um formato separado por vírgulas. Quando visualizadas em um aplicativo do Windows como o notepad++ ou o visualizador de texto baseado na web https://filehelper.com , as linhas parecem como deveriam, ou seja:
name,code,country,lat,lon,elev,style,rwdir,rwlen,freq,desc
"Abfaltersb Chp",Abfalter,,4645.518N,01232.392E,952.0m,1,,,,
"Admont Chp",Admont C,,4734.994N,01427.156E,628.0m,1,,,,
"Admont Stift Kir",Admont S,,4734.517N,01427.700E,646.0m,1,,,,
"Admonterhaus",Admonter,,4737.917N,01429.483E,1720.0m,1,,,,
"Aflenz Kirche",Aflenz K,,4732.717N,01514.467E,772.0m,1,,,,
mas quando eu uso 'cherrypy.log('line%s: %s' % (wpnum, line)) em um loop para exibir as linhas em uma janela de terminal Linux, eu recebo:
[09/Dec/2024:23:37:08] line1: b'name,code,country,lat,lon,elev,style,rwdir,rwlen,freq,desc\r\n'
[09/Dec/2024:23:37:08] line2: b'"Abfaltersb Chp",Abfalter,,4645.518N,01232.392E,952.0m,1,,,,\r\n'
[09/Dec/2024:23:37:08] line3: b'"Admont Chp",Admont C,,4734.994N,01427.156E,628.0m,1,,,,\r\n'
[09/Dec/2024:23:37:08] line4: b'"Admont Stift Kir",Admont S,,4734.517N,01427.700E,646.0m,1,,,,\r\n'
[09/Dec/2024:23:37:08] line5: b'"Admonterhaus",Admonter,,4737.917N,01429.483E,1720.0m,1,,,,\r\n'
[09/Dec/2024:23:37:08] line6: b'"Aflenz Kirche",Aflenz K,,4732.717N,01514.467E,772.0m,1,,,,\r\n'
[09/Dec/2024:23:37:08] line7: b'"Afritz Church",Afritz C,,4643.650N,01347.983E,710.0m,1,,,,\r\n'
[09/Dec/2024:23:37:08] line8: b'"Aich Assac Chp",Aich Ass,,4725.480N,01351.460E,736.0m,1,,,,\r\n'
com o "b'" adicionado ao início de cada linha.
então minha pergunta é - a função lines = file.readlines() do Python está realmente adicionando o "b'" a cada linha, ou isso é algum artefato do mecanismo cherrypy.log()? Ou, como o comercial de fita cassete Memorex de 1981 disse, "É real, ou é Memorex?"
AIT,
Franco
b indica bytes. ou seja, se o conteúdo estiver logado como modo binário, então o 'b' aparecerá. Se você quiser que esse 'b' desapareça, adicione a seguinte linha no seu código python.
cherrypy.log(data.decode('utf-8'))