diferencia entre open, os.open, y os.system

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

diferencia entre open, os.open, y os.system

Andrés Felipe Vargas
Buenas noches,

tengo una inquietud que no he podido resolver, necesito abrir unos
archivos (específicamente unos correos) y extraer unos datos (el
asunto y el remitente), pero me quede en lo mas básico, que fue abrir
el archivo; resulta que siempre obtengo OSError: [Errno 2] No such
file or directory pero lo extraño (al menos para mi) es que si ejecuto
un comando del sistema operativo sobre el mismo archivo usando
os.system si funciona.

Este es el código de prueba

=======================================================================================================
#!/usr/bin/python

import re
import os.path

namelist = []
filename = r'/var/qmail/mailnames/eldominio.com/andphe/Maildir/cur/1302122527.M772061P26989V0000000000000906I0000000035B93979.el.servidor.com\,S\=1979\:2\,'

os.system("cat %s" % filename)  #este si funciona

if os.path.exists(filename):
    print "existe"
else:
    print  "no existe" #este es el que se imprime

os.open(filename, os.O_RDONLY) #este no funciona

FILE  = open(filename, "r") #este no funciona

============================================================================================================

básicamente os.path.exists, os.open y open ninguno encuentra el
archivo, pero el cat en os.system si vacea el contenido del archivo en
la consola.

Ya sabiendo que con el os.system funciona puedo hacerlo con grep, pero
no quiero quedarme con la duda, alguien tiene alguna pista?

Muchas gracias,

Andrés

PD: pasé por la teoría de que otro proceso bloqueaba el archivo, pero
lsof muestra que ningún proceso lo usa

_______________________________________________
Pythoneando...
Pycolombia mailing list
[hidden email]
http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia
Reply | Threaded
Open this post in threaded view
|

Re: diferencia entre open, os.open, y os.system

Javier Rojas-4
On Thu, Apr 07, 2011 at 09:33:27PM -0500, Andrés Felipe Vargas Valencia wrote:
>
> namelist = []
> filename = r'/var/qmail/mailnames/eldominio.com/andphe/Maildir/cur/1302122527.M772061P26989V0000000000000906I0000000035B93979.el.servidor.com\,S\=1979\:2\,'

ud. le está pasando a python una cadena que representa apropiadamente el
nombre de archivo en bash. Esa representación no necesariamente es la
misma que en python, ya que para manejar nombres de archivo en python no
es necesario escapar caracteres. La forma adecuada de escribir el nombre
de ese archivo es:

filename = '/var/qmail/mailnames/eldominio.com/andphe/Maildir/cur/1302122527.M772061P26989V0000000000000906I0000000035B93979.el.servidor.com,S=1979:2,'

nótese que uso cadenas normales en vez de cadenas raw y que quité los
backslash

>
> os.system("cat %s" % filename)  #este si funciona
>
> if os.path.exists(filename):
>     print "existe"
> else:
>     print  "no existe" #este es el que se imprime
>
> os.open(filename, os.O_RDONLY) #este no funciona
>
> FILE  = open(filename, "r") #este no funciona
>
> ============================================================================================================
>
> básicamente os.path.exists, os.open y open ninguno encuentra el
> archivo, pero el cat en os.system si vacea el contenido del archivo en
> la consola.
>
> Ya sabiendo que con el os.system funciona puedo hacerlo con grep, pero
> no quiero quedarme con la duda, alguien tiene alguna pista?
>
> Muchas gracias,
>
> Andrés
>
> PD: pasé por la teoría de que otro proceso bloqueaba el archivo, pero
> lsof muestra que ningún proceso lo usa
>
> _______________________________________________
> Pythoneando...
> Pycolombia mailing list
> [hidden email]
> http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia

--
Javier Rojas

_______________________________________________
Pythoneando...
Pycolombia mailing list
[hidden email]
http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia
Reply | Threaded
Open this post in threaded view
|

Re: diferencia entre open, os.open, y os.system

Andrés Felipe Vargas
Buenas noches Javier,

2011/4/7 Javier Rojas <[hidden email]>:

> On Thu, Apr 07, 2011 at 09:33:27PM -0500, Andrés Felipe Vargas Valencia wrote:
>>
>> namelist = []
>> filename = r'/var/qmail/mailnames/eldominio.com/andphe/Maildir/cur/1302122527.M772061P26989V0000000000000906I0000000035B93979.el.servidor.com\,S\=1979\:2\,'
>
> ud. le está pasando a python una cadena que representa apropiadamente el
> nombre de archivo en bash. Esa representación no necesariamente es la
> misma que en python, ya que para manejar nombres de archivo en python no
> es necesario escapar caracteres. La forma adecuada de escribir el nombre
> de ese archivo es:
>

Gracias por responder,

Ha resuelto mi problema :O, el nombre del archivo lo saque después de
usar el autocompletar en la línea de comandos (de ahí que este
escapado) siempre pensé que esos backslash hacían parte del nombre del
archivo.

Muchas gracias  Javier

Andrés

_______________________________________________
Pythoneando...
Pycolombia mailing list
[hidden email]
http://listas.el-directorio.org/cgi-bin/mailman/listinfo/pycolombia