<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mundo Geek &#187; configuracion</title>
	<atom:link href="http://mundogeek.net/etiqueta/configuracion/feed/" rel="self" type="application/rss+xml" />
	<link>http://mundogeek.net</link>
	<description>Mundo geek, bitácora sobre todo lo geek: software, gadgets, tecnología, internet, ...</description>
	<lastBuildDate>Fri, 25 May 2012 14:51:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Archivos de configuración en Python</title>
		<link>http://mundogeek.net/archivos/2008/12/15/archivos-de-configuracion-en-python/</link>
		<comments>http://mundogeek.net/archivos/2008/12/15/archivos-de-configuracion-en-python/#comments</comments>
		<pubDate>Mon, 15 Dec 2008 08:21:20 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[configparser]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[ini]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://mundogeek.net/?p=2208</guid>
		<description><![CDATA[ConfigParser es un módulo muy útil a la hora de leer y escribir archivos de configuración al estilo de los .ini de Windows, con distintas secciones delimitadas por un nombre de sección entre corchetes y pares clave-valor con la forma &#8220;clave: valor&#8221; o &#8220;clave=valor&#8220;. [una seccion] clave1=valor1 clave2: valor2 [otra seccion] # esto es un [...]]]></description>
			<content:encoded><![CDATA[<p><code>ConfigParser</code> es un módulo muy útil a la hora de leer y escribir archivos de configuración al estilo de los .ini de Windows, con distintas secciones delimitadas por un nombre de sección entre corchetes y pares clave-valor con la forma &#8220;<code>clave: valor</code>&#8221; o &#8220;<code>clave=valor</code>&#8220;.</p>
<blockquote><p><code>[una seccion]<br />
clave1=valor1<br />
clave2: valor2</code></p>
<p><code>[otra seccion]<br />
# esto es un comentario<br />
; y esto otro comentario<br />
clave1=mundogeek.net<br />
clave2=valor<br />
</code></p></blockquote>
<p><span id="more-2208"></span><br />
Para llevar a cabo la escritura y lectura de estos archivos usaremos la clase <code>ConfigParser</code> del módulo.</p>
<p>Para poder leer valores, primero tendremos que crear una instancia de esta clase, y llamar después al método <code>read</code> al que debemos pasar como parámetro una lista con el archivo o archivos de configuración a leer.</p>
<pre name="code" class="python">import ConfigParser

cfg = ConfigParser.ConfigParser()
cfg.read(["config.cfg"])</pre>
<p>Si una o varias de las rutas no existen, simplemente se ignorarán. Sin embargo, el método devuelve una lista con los archivos parseados por lo que es sencillo comprobar qué archivos se han leído o si existía alguno.</p>
<pre name="code" class="python">import ConfigParser

cfg = ConfigParser.ConfigParser()
if not cfg.read(["conf.ini"]):
    print "No existe el archivo"</pre>
<p>Una vez la clase haya leído y parseado el archivo o archivos de configuración, podremos obtener el valor de una opción cualquiera utilizando el método <code>get</code> de la clase, al que se le pasa el nombre de sección y la clave a recuperar.</p>
<pre name="code" class="python">import ConfigParser

cfg = ConfigParser.ConfigParser()
cfg.read(["config.cfg"])

usuario = cfg.get("login", "nombre")
</pre>
<p>En el caso de que la sección no exista se lanzará una excepción <code>NoSectionError</code>. Así mismo, si no existe la opción, se lanzará una excepción <code>NoOptionError</code>.</p>
<p>Si queremos comprobar si existe una sección o una opción, en lugar de encerrar el código en bloques <code>try</code>, podemos utilizar las funciones <code>has_section(seccion)</code> y <code>has_option(seccion, opcion)</code></p>
<pre name="code" class="python">import ConfigParser

cfg = ConfigParser.ConfigParser()
cfg.read(["config.cfg"])

if cfg.has_option("login", "nombre"):
    usuario = cfg.get("login", "nombre")
else:
    print "No se encontró el nombre en el archivo de configuración."</pre>
<p>Modificar o crear un nuevo archivo de configuración es tanto o más sencillo. Para añadir nuevas secciones se utiliza el método <code>add_section(<em>seccion</em>)</code>, para añadir nuevas opciones a una sección <code>set(<em>seccion</em>, <em>clave</em>, <em>valor</em>)</code>, y para escribir el archivo, se utiliza el método <code>write(<em>archivo</em>)</code>.</p>
<pre name="code" class="python">import ConfigParser

cfg = ConfigParser.ConfigParser()

cfg.add_section("login")
cfg.set("login", "nombre", "raul")

f = open("config.cfg", "w")
cfg.write(f)
f.close()</pre>
<link type="text/css" rel="stylesheet" href="http://mundogeek.net/sh/css/SyntaxHighlighter.css"></link>
<script language="javascript" src="http://mundogeek.net/sh/js/shCore.js"></script><br />
<script language="javascript" src="http://mundogeek.net/sh/js/shBrushPython.js"></script><br />
<script language="javascript">dp.SyntaxHighlighter.ClipboardSwf = 'http://mundogeek.net/sh//flash/clipboard.swf';
dp.SyntaxHighlighter.HighlightAll('code');</script></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2008/12/15/archivos-de-configuracion-en-python/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Páginas de error en lugar de alerts en Firefox</title>
		<link>http://mundogeek.net/archivos/2005/09/16/paginas-de-error-en-lugar-de-alerts-en-firefox/</link>
		<comments>http://mundogeek.net/archivos/2005/09/16/paginas-de-error-en-lugar-de-alerts-en-firefox/#comments</comments>
		<pubDate>Fri, 16 Sep 2005 11:55:44 +0000</pubDate>
		<dc:creator>Zootropo</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[configuracion]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[mozilla]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[trucos]]></category>

		<guid isPermaLink="false">http://mundogeek.net/archivos/2005/09/16/paginas-de-error-en-lugar-de-alerts-en-firefox/</guid>
		<description><![CDATA[Hace más de un año comentaba cómo hacer que Firefox mostrara una página de error al no encontrar una página, al estilo de Internet Explorer, en lugar de un diálogo molesto que ni tan si quiera nos informa de la url de la página que no ha podido ser cargada. Como muchas otras pequeñas joyas [...]]]></description>
			<content:encoded><![CDATA[<p>Hace más de un año comentaba cómo hacer que <a href="http://mundogeek.net/archivos/2004/04/21/mostrar-pginas-de-error-en-lugar-de-alerts-en-firefox/" title="Una antigua entrada de la bitácora sobre cómo mostrar una web de error de página no encontrada en Firefox" hreflang="es">Firefox mostrara una página de error al no encontrar una página</a>, al estilo de Internet Explorer, en lugar de un diálogo molesto que ni tan si quiera nos informa de la url de la página que no ha podido ser cargada.</p>
<p>Como muchas otras pequeñas joyas escondidas en la bitácora <img src='http://mundogeek.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  no es una entrada que mucha gente conozca, ya que suele ser habitual ver en distintos foros <a href="http://www.microsiervos.com/archivo/internet/por-que-me-cambie-a-firefox.html">o bitácoras</a> que esta ventana de diálogo es una de las características más detestadas en Firefox. Por eso, y porque han cambiado algunas cosas desde entonces una pequeña actualización no está de más. Veamos cuánto tarda alguna web de software en copiarlo sin mencionar a mundo geek <img src='http://mundogeek.net/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>
<p>Basta escribir about:config en la barra de direcciones del navegador para abrir el diálogo de configuración de Firefox. Buscaremos entonces la clave &#8220;browser.xul.error_pages.enabled&#8221;, y una vez encontrada, haremos doble click sobre ésta para ponerla a true y reiniciamos el navegador para que Firefox muestre páginas de error, y la url de la web no encontrada en la barra de direcciones, como siempre debería haber sido.</p>
<p><img src="http://img100.imageshack.us/img100/1852/paginaserrorfirefox1mm.jpg" alt="Página no encontrada en Firefox" /></p>
]]></content:encoded>
			<wfw:commentRss>http://mundogeek.net/archivos/2005/09/16/paginas-de-error-en-lugar-de-alerts-en-firefox/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

