[Spambayes] Unwanted stock solicitations

Vibe Grevsen grevsen at gmail.com
Fri Nov 3 11:26:31 CET 2006


Hi Luigi,


> > os.popen3() does not seem to support the read()-method?

> Are you sure?

------------

Yep, seems so at least in Python 2.5:

Python 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> ocr_cmd = ur'ocrad -s %s -c %s "%s"' % ("2", "ascii", "c:\logo.pgm")

>>> os.popen3( ocr_cmd ).read()
__main__:1: RuntimeWarning: tp_compare didn't return -1 or -2 for exception
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'tuple' object has no attribute 'read'

>>> os.popen( ocr_cmd ).read()
'- Unlo_k Arhus -\n\n'
>>>


> commented calling ocrad using popen3 and it works (at least on of a few
> computers I tested it)

Hmm, strange. For the record, which OS are you using it on?



> > > On windows you have to put quote around pnmfile to protect against space
> > > in path (also un linux you should have them but it's unlikely you get a
> > > path with a space).
> 
> > Oh, YES, you're absolutely right.
> > Thank you for this suggestion.
> 
> 
> > > On windows there is also an other caveat.
> > > you should put quote also around ocrad path but if you do that you have
> > > to quote everything.
> > > to explain the command should be:
> 
> > > ocr_cmd = r'""ocrad_path" -s %s -c %s  "%s""'%(scale, charset, pnmfile)
> > > fin, fout, ferrr = os.popen3(ocr_cmd)
> 
> > I tested your suggestion, but it seemed to resolve wrong in the interpreter.
> > Also popen3() could not be read() so I changed it a bit

> Strange. It's work for me

The tripple-quoting resolved wrong I think. I don't understand it completely.
Maybe because it's already a raw string?



> >                # u: unicode support, r: raw string
> >               ocr_cmd = ur'ocrad -s %s -c %s "%s"' % (scale, charset, pnmfile)
> >               ocr = os.popen( ocr_cmd )
> >
> > I also tested this
> >
> >               # u: unicode support, r: raw string
> >               ocr_cmd = ( ur'ocrad -s %s -c %s < "%s" 2>' + os.path.devnull ) % (scale, charset, pnmfile)
> >               ocr = os.popen( ocr_cmd )
> >
> > Both working in windows so Skip can pick whichever he likes best ;)

> Does 2> really work? I think it kind of works because it's ignored by
> cmd.exe but it's a unix sh construct (I'm not really sure if it even
> works using csh derived shells)

Yes, it works in NT, XP and 2k: http://shorterlink.com/?P3W1A9
(You may even learn some tricks from that article)



> > > using -s (and other flags as well) disable -x.
> >
> > Hmm, bug, no, better undocumented feature? :)

> oh yes, you have to look inside the source code to find it

Okay ...



> > > orf file is never used. probably is there from the start before skip
> > > introduce the scale parameter
> > 
> > Actually he tries to count the number of lines in orf I think

> no, he looks for line starting with line that probably it's related to
> the number of line in the output.

Not sure - I'd never even opened a .py file ten days ago :) - but this

ctokens.add("image-text-lines:%d" %
                                        int(log2(nlines)))

makes me suspicious... Skip?



Happy coding :)
  
Vibe


More information about the SpamBayes mailing list