Re: some OT: how to solve this kind of problem in our program?
oyster [EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] 1. first of all, what is the English jargon (Optimize? But I think this is not a very good keyword :( )for this problem? So I can use it to search on the internet 2. is there any free/open lib for this? 3. I know for some questions(case 1, case 2, and sudoku), we can use bundles of FOR...NEXT loop to program. however I think it is clumsy and inconvenient, especially when there is many vars 4. I don't know how to deal with case 3 and case 4 case: 1. choose x0~x9 from 1~9, and must use all of 1~9, let x0/(10*x1+x2)+x3/(10*x4+x5)+x6/(10*x7+x8)=1/2 Since you are working with permutations of [1..9], here is a general framework for problems using those permutations - put your problem definition in the function func, which is successively passed each of the 362880 permutations of the numbers 1-9. On my system, your original code ran in about 11 seconds, and after factoring out invariants, got down to about 1.8 seconds. This little framework takes about 4.5 seconds, but with psyco, cuts down to about 1.3 seconds. -- Paul import time try: import psyco psyco.full() except: pass def prod(lst): return reduce(lambda a,b:a*b,lst,1) def perms(setSize, sampleSize): return prod(xrange(setSize-sampleSize+1,setSize+1)) def permutation(k, s): fact = 1 s = s[:] for j in xrange( 2, len(s)+1): fact = fact * (j-1) idx1 = j - ((k / fact) % j)-1 idx2 = j-1 s[idx1],s[idx2] = s[idx2],s[idx1] return s def permutations(s,sampleSize=None): if sampleSize is None: sampleSize = len(s) k = perms(len(s),sampleSize) for i in xrange(k): yield permutation(i,s) d0,d1 = 1,2 def func(p): a0,a1,a2,b0,b1,b2,c0,c1,c2 = p # do application evaluation here b1b2 = 10*b1+b2 a1a2 = 10*a1+a2 c1c2 = 10*c1+c2 if d1*a0*b1b2*c1c2 + d1*b0*a1a2*c1c2 + d1*c0*a1a2*b1b2 == d0*a1a2*b1b2*c1c2: return sorted( [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] ) else: return None st = time.time() result = [] for p in permutations(range(1,10)): aresult = func(p) if aresult is not None and aresult not in result: result.append(aresult) et=time.time() print 'time elapsed: %.4f s' % (et-st) for [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] in result: print ' %0d %0d %0d %0d' % (a0, b0, c0, d0) print '--- + --- + --- = ---' print ' %0d%0d%0d%0d%0d%0d %0d' %(a1, a2, b1, b2, c1,c2, d1) print -- http://mail.python.org/mailman/listinfo/python-list
Re: Newbie: what is a usefull IDE for Python on Windows ?
Eclipse + Editplus -- http://mail.python.org/mailman/listinfo/python-list
Re: some OT: how to solve this kind of problem in our program?
In [EMAIL PROTECTED], oyster wrote: 1. first of all, what is the English jargon (Optimize? But I think this is not a very good keyword :( )for this problem? So I can use it to search on the internet 2. is there any free/open lib for this? 3. I know for some questions(case 1, case 2, and sudoku), we can use bundles of FOR...NEXT loop to program. however I think it is clumsy and inconvenient, especially when there is many vars 4. I don't know how to deal with case 3 and case 4 case: 1. choose x0~x9 from 1~9, and must use all of 1~9, let x0/(10*x1+x2)+x3/(10*x4+x5)+x6/(10*x7+x8)=1/2 2. choose x0~x15 from 1~16, and must use all of 1~16, let +-+-+-+-+ | x0 | x1 | x2 | x3 | +-+-+-+-+ | x4 | x5 | x6 | x7 | +-+-+-+-+ | x8 | x9 | x10 | x11 | +-+-+-+-+ | x12 | x13 | x14 | x15 | +-+-+-+-+ sum of every column =sum of of every row = x0+x5+x10+x11 =x3+x6+x9+x12 The first two can be solved by a finite domain constraint solver. Logilab has a pure-python package: http://www.logilab.org/view?rql=Any%20X%20WHERE%20X%20eid%20852 Ciao, Marc 'BlackJack' Rintsch -- http://mail.python.org/mailman/listinfo/python-list
Re: consequence and life
I alway wondered if you are smelling a flower in a dream while on some crazy herbal medication. are you smelling the flower that is in the drug or a a flower that you once smelled when you were three years old on your daddy's knee ofr when you were bent over in the park looking for your lost keys. marika wrote: 'The mind can make Substance, and people planets of its own With beings brighter than have been, and give A breath to forms which can outlive all flesh.' Byron - 'The Dream' 1816 st.1 -- http://mail.python.org/mailman/listinfo/python-list
Re: split string with hieroglyphs
Steven, thanks! Very nice algorithm. Here is code: #!/usr/bin/env python # -*- coding: utf_8 -*- # Thanks Steven D'Aprano for hints import unicodedata import MySQLdb #MySQL variables mysql_host = localhost mysql_user = dict mysql_password = passwd mysql_db = dictionary try: mysql_conn = MySQLdb.connect(mysql_host, mysql_user, mysql_password, mysql_db) cur = mysql_conn.cursor() cur.execute(SET NAMES UTF8) except: print unable insert to MySQL, check connection jap_text = BZツーリTVツキDVD? jap_text = unicode(jap_text, 'utf-8') # fight with full-width, half-width katakana madness :-) jap_text = unicodedata.normalize('NFKC', jap_text) # jap_text = jap_text.encode('utf-8') # def translate_hieroglyph(jap_text): eng_text = mysql_translate_query = SELECT Eng FROM dictionary where Jis='%s' collate utf8_unicode_ci LIMIT 1 % jap_text cur.execute(mysql_translate_query) mysql_trans_data = cur.fetchall() for line in mysql_trans_data: eng_text = line[0] if not eng_text: eng_text = jap_text return eng_text def islatin(s): try: unicode(s, 'ascii') except UnicodeError: pass else: return True def split_fragments(s): fragments = [] latin = [] nonlatin = [] for c in s: if islatin(c): if nonlatin: fragments.append(''.join(nonlatin)) nonlatin = [] latin.append(c) else: if latin: fragments.append(''.join(latin)) latin = [] nonlatin.append(c) if latin: # without this we lose last fragment fragments.append(''.join(latin)) # else: # fragments.append(''.join(nonlatin)) # return fragments fragments = split_fragments(jap_text) def join_fragments(fragments): accumulator = [] for fragment in fragments: if islatin(fragment): accumulator.append(fragment) else: accumulator.append(translate_hieroglyph(fragment)) return ' '.join(accumulator) print join_fragments(fragments) [EMAIL PROTECTED] ~/Src/Code $ python translate.py BZ navigation TV display DVD? Work as needed :-) Thanks again! -- http://mail.python.org/mailman/listinfo/python-list
Connection python with C
Hi.. I want to connect a script in python with a source code in C. Any ideas about it? Thank you! Chrysanthi -- http://mail.python.org/mailman/listinfo/python-list
Re: Connection python with C
Χρυσάνθη Αϊναλή wrote: I want to connect a script in python with a source code in C. Any ideas about it? http://docs.python.org/lib/module-ctypes.html http://docs.python.org/ext/ext.html http://effbot.org/pyfaq/extending-index.htm /F -- http://mail.python.org/mailman/listinfo/python-list
Re: some OT: how to solve this kind of problem in our program?
Paul McGuire: This little framework takes about 4.5 seconds, but with psyco, cuts down to about 1.3 seconds. st = time.time() result = [] for p in permutations(range(1,10)): aresult = func(p) if aresult is not None and aresult not in result: result.append(aresult) et=time.time() print 'time elapsed: %.4f s' % (et-st) for [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] in result: print ' %0d %0d %0d %0d' % (a0, b0, c0, d0) print '--- + --- + --- = ---' print ' %0d%0d%0d%0d%0d%0d %0d' %(a1, a2, b1, b2, c1,c2, d1) print If you want to more speed, put long loops always inside functions, not inside the main body: def main(): st = clock() result = [] for p in permutations(range(1, 10)): aresult = func(p) if aresult is not None and aresult not in result: result.append(aresult) et = clock() print 'time elapsed: %.4f s' % (et-st) for [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] in result: print ' %0d %0d %0d %0d' % (a0, b0, c0, d0) print '--- + --- + --- = ---' print ' %0d%0d%0d%0d%0d%0d %0d' %(a1, a2, b1, b2, c1,c2, d1) print main() If you have a bit of time you can test the speed of this code on your computer. Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: removing the header from a gzip'd string
[EMAIL PROTECTED] wrote: Essentially, they note that the NCD does not always bevave like a metric and one reason they put forward is that this may be due to the size of the header portion (they were using the command line gzip and bzip2 programs) compared to the strings being compressed (which are on average 48 bytes long). gzip datastreams have a real header, with a file type identifier, optional filenames, comments, and a bunch of flags. but even if you strip that off (which is basically what happens if you use zlib.compress instead of gzip), I doubt you'll get representative compressability metrics on strings that short. like most other compression algorithms, those algorithms are designed for much larger datasets. /F -- http://mail.python.org/mailman/listinfo/python-list
Re: Help please using telnetlib module
Simplest explanation is that you can't do a 'show run' from global configuration mode try something like #exit global configuration mode tn.write('end\n') print tn.read_until('#') #disable pause after 24 lines tn.write('term len 0\n') tn.read_until('#') #now show the entire running-config tn.write('show run\n') print tn.read_until('#') -- http://mail.python.org/mailman/listinfo/python-list
Re: some OT: how to solve this kind of problem in our program?
On 12/24/06, oyster [EMAIL PROTECTED] wrote: 1. first of all, what is the English jargon (Optimize? But I think this is not a very good keyword :( )for this problem? So I can use it to search on the internet The first problem is a magic square. The general term for all your problems are constraint satisfaction problems. 2. is there any free/open lib for this? Yes, this for example: http://labix.org/python-constraint 3. I know for some questions(case 1, case 2, and sudoku), we can use bundles of FOR...NEXT loop to program. however I think it is clumsy and inconvenient, especially when there is many vars Yes. I think it is also very much unoptimal. For solving problems such as magic squares and sudoku puzzles you want a recursive backtracking constraint solver. case: 1. choose x0~x9 from 1~9, and must use all of 1~9, let x0/(10*x1+x2)+x3/(10*x4+x5)+x6/(10*x7+x8)=1/2 Using the linked to constraint solver, you could write something like this: p = Problem() # Ten variables named 0..9 all with values in the domain 0..9 p.addVariables(range(10), range(10)) p.addConstraint(AllDifferentConstraint(), range(10)) def eqConstraint(*x): t = x[0]/(10*x[1] + x[2]) + x[3]/(10 * x[4] + x[5]) + x[5](10 * x[7] + x[8]) # Convert to int to get rid of rounding errors t = int(t * 2) return t == 1 p.addConstraint(eqConstraint, range(10)) p.getSolutions() 2. choose x0~x15 from 1~16, and must use all of 1~16, let +-+-+-+-+ | x0 | x1 | x2 | x3 | +-+-+-+-+ | x4 | x5 | x6 | x7 | +-+-+-+-+ | x8 | x9 | x10 | x11 | +-+-+-+-+ | x12 | x13 | x14 | x15 | +-+-+-+-+ sum of every column =sum of of every row = x0+x5+x10+x11 =x3+x6+x9+x12 Similar to above, just enter all the constraints and let the library do the hard work: def lineConstraint(*l): s1 = sum(l[:4]) s2 = sum(l[4:]) return s1 == s2 # For magic squares, recursive backtracking solves are the best p = Problem(RecursiveBacktrackingSolver()) p.addConstraint(AllDifferentConstraint()) p.addConstraint(lineConstraint, [0, 5, 10, 11, 3, 6, 9, 12]) ... add more constraints... p.getSolution() HTH -- mvh Björn -- http://mail.python.org/mailman/listinfo/python-list
[pyOpenGL]Demo cannot run on Python2.5
(I'm a newbie in Python and pyOpenGL.) Environment: WinXP SP2 Python ver. 2.5 WingIDE easy_install is installed PIL, pyNum is installed Download PyOpenGL-3.0.0a5-py2.5.egg run: easy_install PyOpenGL-3.0.0a5-py2.5.egg pyOpenGL is installed in D:\Python25\Lib\site-packages\PyOpenGL-3.0.0a5-py2.5.egg\ I tried to run a example .\OpenGL\Demo\da\dots.py, but it fails in the line: from OpenGL.GL import * with errors: AttributeError: 'WinFunctionType' object has no attribute 'returnValues' Traceback (innermost last): File OpenGL\Demo\da\dots.py, line 1, in module #!/usr/bin/python File OpenGL\Demo\da\dots.py, line 24, in module from OpenGL.GL import * File OpenGL\GL\__init__.py, line 3, in module from OpenGL.raw.GL.annotations import * File OpenGL\raw\GL\annotations.py, line 19, in module 'textures', File OpenGL\arrays\arrayhelpers.py, line 68, in setInputArraySizeType if not hasattr( function, 'returnValues' ): File OpenGL\wrapper.py, line 64, in __getattr__ return getattr( self.wrappedOperation, key ) It seems that pyOpenGL reimplements the module ctypes internally, but not finished I cannot find self.wrappedOperation with any attribute with the name of 'returnValues'. How to go through this problem? Did I make some simple mistakes at the beginning of the installation of pyOpenGL? Thank you! ShenLei -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
Fuzzyman ha escrito: Perhaps only with the addendum that although 'Lisp roolz', no-one uses for anything of relevance anymore and it is continuing it's geriatric decline into obscurity. ;-) I do not think that i cannot agree with the contrary of this but i do not think the contrary neither. I am being said that LISP is being actively pursued by a number of joung hackers as Graham and Tilton. Do not believe? Ken Tilton has noticed that Dalai Lama has becomed interested in LISP also. -- http://mail.python.org/mailman/listinfo/python-list
problem with PIPE
Hello, I'm new in Python, i don't know my subject is correct or wrong. I have problem with my script. I want to change password with passwd password in python without user submitted anything from keyboard. I get tutorial that i must use pipe to process this. And this is my code : [code] 1. 2. #!/usr/bin/python 3. 4. import os 5. 6. COMMAND = 'passwd' 7. PASSWD = 'mypassword' 8. 9. # open a pipe to passwd program and 10. # write the data to the pipe 11. p = os.popen(%s % COMMAND, 'w') 12. p.write(PASSWD) 13. p.write('\n') 14. p.write(PASSWD) 15. p.close() 16. [/code] but i got this error : [output] [EMAIL PROTECTED] cp]$ ./password Changing password for user cp. Changing password for cp (current) UNIX password: passwd: Authentication token manipulation error [/output] Anyone can help me how to write to pipe.. i try several method, and always fail. Thank's -- Dhika Cikul -- http://mail.python.org/mailman/listinfo/python-list
Help with small program
Hello, I am a newbie with python, though I am having a lot of fun using it. Here is one of the excersizes I am trying to complete: the program is supposed to find the coin combination so that with 10 coins you can reach a certain amoung, taken as a parameter. Here is the current program: coins = (100,10,5,1,0.5) anslist = [] def bar(fin, hist = {100:0,10:0,5:0,1:0,0.5:0}): s = sum(x*hist[x] for x in hist) l = sum(hist.values()) if s fin and l 10: for c in coins: if (s+c) = fin: hist[c] += 1 bar(fin, hist) hist[c] -= 1 elif l==10 and s==fin and not hist in anslist: #p1 anslist.append(hist) bar(50) print anslist The problem is that if I run it, anslist prints as [{0.5: 0, 1: 0, 10: 0, 100: 0, 5: 0}], which doesnt even add up to 50. When I check how many times the program has reached the #p1 by sticking a print there, it only reaches it once, and it comes out correct. why is it that this result is replaced by the incorrect final one? -- http://mail.python.org/mailman/listinfo/python-list
Re: regular expression
Kleine Aap wrote: Asper Faner wrote: I seem to always have hard time understaing how this regular expression works, especially how on earth do people bring it up as part of computer programming language. Natural language processing seems not enough to explain by the way. Why no eliminate it ? I.M.H.O. anyone that is not capable to grasp the concept of regular expressions should not attempt to write computer programs at all! My suggestion to you would be to find a job that involves working with your hands... Your humble opinion doesn't get much ruder... Perhaps you meant anyone that is not capable to grasp the concept of regular expressions after some experience with programming should not attempt to write computer programs at all! Then at least newbies would have a leg to stand on. Otherwise, you're practically cutting off all entrances into the world of programming! The concept of regular expressions isn't exactly the simplest one out there. Just because you understood it immediately (which I'm guessing you did, considering your harsh response), doesn't mean others find the concept that simple. -- http://mail.python.org/mailman/listinfo/python-list
Re: regular expression
I'm a great fan of regexp because it has great power and flexibility. if you don't like it I suggest you to read Mastering Regular Expressions. http://www.oreilly.com/catalog/regex3/ Yes, sometimes it might be hard to understand bites you but if you use it correctly, it works great. On 18 Dec 2006 20:25:32 -0800, Asper Faner [EMAIL PROTECTED] wrote: I seem to always have hard time understaing how this regular expression works, especially how on earth do people bring it up as part of computer programming language. Natural language processing seems not enough to explain by the way. Why no eliminate it ? -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with small program
smartbei schrieb: Hello, I am a newbie with python, though I am having a lot of fun using it. Here is one of the excersizes I am trying to complete: the program is supposed to find the coin combination so that with 10 coins you can reach a certain amoung, taken as a parameter. Here is the current program: coins = (100,10,5,1,0.5) anslist = [] def bar(fin, hist = {100:0,10:0,5:0,1:0,0.5:0}): s = sum(x*hist[x] for x in hist) l = sum(hist.values()) if s fin and l 10: for c in coins: if (s+c) = fin: hist[c] += 1 bar(fin, hist) hist[c] -= 1 elif l==10 and s==fin and not hist in anslist: #p1 anslist.append(hist) bar(50) print anslist The problem is that if I run it, anslist prints as [{0.5: 0, 1: 0, 10: 0, 100: 0, 5: 0}], which doesnt even add up to 50. When I check how many times the program has reached the #p1 by sticking a print there, it only reaches it once, and it comes out correct. why is it that this result is replaced by the incorrect final one? hist is stored in anslist as a pointer only, therfore the hist[c] -= 1 operates on the same dict as is stored in the anslist. Try the following in the python interpreter: a = { 'key' : 1 } l = [a] l[0]['key'] -= 1 a instead use: anslist.append(dict(hist.items)) which will copy the dict. -- http://mail.python.org/mailman/listinfo/python-list
Re: problem with PIPE
Dhika Cikul schrieb: Hello, I'm new in Python, i don't know my subject is correct or wrong. I have problem with my script. I want to change password with passwd password in python without user submitted anything from keyboard. I get tutorial that i must use pipe to process this. And this is my code : [code] 1. 2. #!/usr/bin/python 3. 4. import os 5. 6. COMMAND = 'passwd' 7. PASSWD = 'mypassword' 8. 9. # open a pipe to passwd program and 10. # write the data to the pipe 11. p = os.popen(%s % COMMAND, 'w') 12. p.write(PASSWD) 13. p.write('\n') 14. p.write(PASSWD) 15. p.close() 16. [/code] but i got this error : [output] [EMAIL PROTECTED] cp]$ ./password Changing password for user cp. Changing password for cp (current) UNIX password: passwd: Authentication token manipulation error [/output] Anyone can help me how to write to pipe.. i try several method, and always fail. Thank's I guess the passwd program doesn't allow changing passwords from a pipe since it is a potential security hole. -- http://mail.python.org/mailman/listinfo/python-list
Re: some OT: how to solve this kind of problem in our program?
Using Psyco this version is much faster, you can test it on your PC compared to the other one (the whole running time, Psyco compilation too): Psyco is unable to speed up generator functions, so you have to return true lists. Giving the func to the permutation function, you can avoid lot of list copying and unpacking. try: import psyco psyco.full() except ImportError: pass d0, d1 = 1, 2 def func(p): a0,a1,a2,b0,b1,b2,c0,c1,c2 = p # do application evaluation here b1b2 = 10*b1+b2 a1a2 = 10*a1+a2 c1c2 = 10*c1+c2 if d1*a0*b1b2*c1c2 + d1*b0*a1a2*c1c2 + d1*c0*a1a2*b1b2 \ == d0*a1a2*b1b2*c1c2: return sorted( [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] ) else: return None def accepted_permutations(alist, func): # func must return None for the unacceptable results # Algoritm from Phillip Paul Fuchs, modified result = [] items = alist[:] n = len(alist) p = range(n+1) i = 1 r = func(alist) if r is not None: result.append(r) while i n: p[i] -= 1 if i 1: j = p[i] else: j = 0 alist[j], alist[i] = alist[i], alist[j] r = func(alist) if r is not None: result.append(r) i = 1 while p[i] == 0: p[i] = i i += 1 return result def main(): result = [] for aresult in accepted_permutations(range(1, 10), func): if aresult not in result: result.append(aresult) [[a0, a1, a2], [b0, b1, b2], [c0, c1, c2]] = aresult print ' %0d %0d %0d %0d' % (a0, b0, c0, d0) print '--- + --- + --- = ---' print ' %0d%0d%0d%0d%0d%0d %0d'%(a1,a2,b1,b2,c1,c2,d1) print main() Bye, bearophile -- http://mail.python.org/mailman/listinfo/python-list
Re: Connection python with C
Fredrik Lundh wrote: Χρυσάνθη Αϊναλή wrote: I want to connect a script in python with a source code in C. Any ideas about it? http://docs.python.org/lib/module-ctypes.html http://docs.python.org/ext/ext.html http://effbot.org/pyfaq/extending-index.htm /F Just a suggestion: another way could be to use XML-RPC. It's a lightweight distributed computing technology. Python standard library has an XML-RPC module. I'm not sure, but I think there may be a similar module for C. I'm almost certain there is one for C++. Try xmlrpc.com or xml-rpc.com and also Google for appropriate patterns, e.g. XML-RPC library for C. Try a few variations on the pattern, that helps. Yet another way - might be suitable only if your Python script and your C program can both read/write standard input/output, and one is a producer and the other is the related consumer. In this case you can just use: $ python my_python_script | my_C_binary or the other way around, as per need. HTH Vasudev ~ Vasudev Ram Dancing Bison Enterprises http://www.dancingbison.com Check out the cool Snap.com link preview feature on my site. Free sign-up at www.snap.com I'm not affiliated with Snap.com ~ -- http://mail.python.org/mailman/listinfo/python-list
Re: regular expression
Dustan wrote: Kleine Aap wrote: Asper Faner wrote: I seem to always have hard time understaing how this regular expression works, especially how on earth do people bring it up as part of computer programming language. Natural language processing seems not enough to explain by the way. Why no eliminate it ? I.M.H.O. anyone that is not capable to grasp the concept of regular expressions should not attempt to write computer programs at all! My suggestion to you would be to find a job that involves working with your hands... Your humble opinion doesn't get much ruder... Perhaps you meant anyone that is not capable to grasp the concept of regular expressions after some experience with programming should not attempt to write computer programs at all! Then at least newbies would have a leg to stand on. Otherwise, you're practically cutting off all entrances into the world of programming! The concept of regular expressions isn't exactly the simplest one out there. Just because you understood it immediately (which I'm guessing you did, considering your harsh response), doesn't mean others find the concept that simple. I agree, and in addition: (large) regular expressions are easy to write, but can be almost impossible to read back ! I once had a program to generate and evaluate regular expressions, but can't find it anymore :-( If someone has links to regex generators/evaluators, I'ld be much obliged. cheers. Stef Mientki -- http://mail.python.org/mailman/listinfo/python-list
Saw a possibly interesting Python PDF library - pyPDF
Saw a possibly interesting Python PDF library - pyPDF. For merging/splitting PDFs and related operations. It's at http://pybrary.net/pyPdf/ HTH Vasudev ~ Vasudev Ram Dancing Bison Enterprises http://www.dancingbison.com Check out the cool Snap.com link preview feature on my site. Free sign-up at www.snap.com I'm not affiliated with Snap.com ~ -- http://mail.python.org/mailman/listinfo/python-list
file/directory format/size help
Hi I am writing a script to upload images. How do I check the format of the file? How can I tell if the file is an image, movie, or text file? I would also like to put a limit on how much a user can upload. So how can I check how many bits, bytes, mb, gb are in a folder. So that sums up to #1 What type of file is the file? Is it a movie, image, or text document? #2 What particular form is the file jpeg, bmp, gif etc.? #3 The size of a directory? Thanks -- http://mail.python.org/mailman/listinfo/python-list
Re: regular expression
On Sun, 24 Dec 2006 16:36:31 +0100, Stef Mientki wrote: Dustan wrote: Kleine Aap wrote: Asper Faner wrote: I seem to always have hard time understaing how this regular expression works, especially how on earth do people bring it up as part of computer programming language. Natural language processing seems not enough to explain by the way. Why no eliminate it ? I.M.H.O. anyone that is not capable to grasp the concept of regular expressions should not attempt to write computer programs at all! My suggestion to you would be to find a job that involves working with your hands... Your humble opinion doesn't get much ruder... Perhaps you meant anyone that is not capable to grasp the concept of regular expressions after some experience with programming should not attempt to write computer programs at all! Then at least newbies would have a leg to stand on. Otherwise, you're practically cutting off all entrances into the world of programming! The concept of regular expressions isn't exactly the simplest one out there. Just because you understood it immediately (which I'm guessing you did, considering your harsh response), doesn't mean others find the concept that simple. I agree, and in addition: (large) regular expressions are easy to write, but can be almost impossible to read back ! I once had a program to generate and evaluate regular expressions, but can't find it anymore :-( If someone has links to regex generators/evaluators, I'ld be much obliged. cheers. Stef Mientki A good tool to write, test and analyse regexes is the Regulator, available here http://sourceforge.net/projects/regulator/ A good reference site is http://www.regular-expressions.info/, with tutorials, examples and tools -- Bits.Bytes http://bytes.thinkersroom.com -- http://mail.python.org/mailman/listinfo/python-list
Merry Christmas and a happy new year!
I wish everybody a merry Christmas and a happy new year. Have a good and beautiful new year. Thomas -- http://mail.python.org/mailman/listinfo/python-list
turbogears app deployment
I am trying to host a TuboGears app using Apache and mod_python on a machine running Windows XP SP2 Professional. Version info: apache_2.2.3-win32-x86-no_ssl.msi, python-2.4.4.msi, mod_python-3.2.10.win32-py2.4-apache2.2.exe, mpcp-1.5.tar.gz, turbogears-1.0b2-py2.4 = 1. Installed Apache. 2. Installed python, turbogears, mod_python. Added LoadModule python_module modules/mod_python.so to conf\httpd.conf. The mod_python example is working. 3. In order to host a simple TG application, I am using the bookmarker application which is in the TurboGears book (v1 from Chap 4). That works when I run it locally on my machine (also a WinXP SP2 box). Copied the application to C:\Program Files\Apache Software Foundation\Apache2.2\htdocs 4. Made the following changes to conf\httpd.conf Changed AllowOverride for .htaccess to: AllowOverride All 5. Renamed start file to bookmarker_start.py. Created a file called .htaccess in bookmarker directory which has the following SetHandler mod_python PythonHandler mpcp PythonDebug On PythonOption cherrysetup bookmarker_start::mp_setup 6. Copied mpcp.py to the bookmarker directory (tried with installing it using easy_install -Z mpcp, didn't help). 7. Changed bookmarker_start.py #turbogears.start_server(Root())--- commented this line and added the lines below. def mp_setup(): pass if __name__ == __main__: cherrypy.server.start() = I have restarted the Apache daemon multiple times. When I try to connect to http://machine/bookmarker, I get: Mod_python error: PythonHandler mpcp Traceback (most recent call last): File C:\Python24\Lib\site-packages\mod_python\apache.py, line 299, in HandlerDispatch result = object(req) File C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/bookmarker/mpcp.py, line 38, in handler setup(req, options) File C:/Program Files/Apache Software Foundation/Apache2.2/htdocs/bookmarker/mpcp.py, line 22, in setup cherrypy.server.start(init_only=True, server_class=None) File c:\python24\lib\site-packages\CherryPy-2.2.1-py2.4.egg\cherrypy\_cpserver.py, line 72, in start Engine.start(self) File c:\python24\lib\site-packages\CherryPy-2.2.1-py2.4.egg\cherrypy\_cpengine.py, line 91, in start autoreload.main(self._start, freq=freq) File c:\python24\lib\site-packages\CherryPy-2.2.1-py2.4.egg\cherrypy\lib\autoreload.py, line 63, in main sys.exit(restart_with_reloader()) SystemExit: 1 Any idea what the problem is? Thanks for your help. -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with small program
Felix Benner wrote: smartbei schrieb: Hello, I am a newbie with python, though I am having a lot of fun using it. Here is one of the excersizes I am trying to complete: the program is supposed to find the coin combination so that with 10 coins you can reach a certain amoung, taken as a parameter. Here is the current program: coins = (100,10,5,1,0.5) anslist = [] def bar(fin, hist = {100:0,10:0,5:0,1:0,0.5:0}): s = sum(x*hist[x] for x in hist) l = sum(hist.values()) if s fin and l 10: for c in coins: if (s+c) = fin: hist[c] += 1 bar(fin, hist) hist[c] -= 1 elif l==10 and s==fin and not hist in anslist: #p1 anslist.append(hist) bar(50) print anslist The problem is that if I run it, anslist prints as [{0.5: 0, 1: 0, 10: 0, 100: 0, 5: 0}], which doesnt even add up to 50. When I check how many times the program has reached the #p1 by sticking a print there, it only reaches it once, and it comes out correct. why is it that this result is replaced by the incorrect final one? hist is stored in anslist as a pointer only, therfore the hist[c] -= 1 operates on the same dict as is stored in the anslist. Try the following in the python interpreter: a = { 'key' : 1 } l = [a] l[0]['key'] -= 1 a instead use: anslist.append(dict(hist.items)) which will copy the dict. Thanks! BTW - its hist.items(), after that it worked. -- http://mail.python.org/mailman/listinfo/python-list
Re: problem with PIPE
In article [EMAIL PROTECTED], Felix Benner [EMAIL PROTECTED] wrote: Dhika Cikul schrieb: Hello, I'm new in Python, i don't know my subject is correct or wrong. I have problem with my script. I want to change password with passwd password in python without user submitted anything from keyboard. I get . [other issues I don't choose to address now] . . I guess the passwd program doesn't allow changing passwords from a pipe since it is a potential security hole. This is exactly the domain Pexpect addresses URL: http://www.unixreview.com/documents/s=9083/sam0402d/ . -- http://mail.python.org/mailman/listinfo/python-list
terminology question - foreign function library
I am prompted to make these inquiries after seeing the following link to ctypes: http://docs.python.org/lib/module-ctypes.html in which ctypes is described as a foreign function library. What is the definition of foreign function library? Is the concept different from a package? Is the concept different from a module? Thank you. -- http://mail.python.org/mailman/listinfo/python-list
Re: Fall of Roman Empire
Dec 20, 10:36 am, Felix Benner [EMAIL PROTECTED] wrote: static int main(int argc, char **argv) { char *god_name; if (argc) god_name = argv[1]; else god_name = YHWH; metaPower God = getGodByName(god_name); universe *everything = makeUniverse(God); while (simulatePhysics(everything)); return 0; } This won't work if there are no command-line arguments. You mean if (argc 1). -- http://mail.python.org/mailman/listinfo/python-list
Re: consequence and life
Lester Mosley wrote: I alway wondered if you are smelling a flower in a dream while on some crazy herbal medication. are you smelling the flower that is in the drug or a a flower that you once smelled when you were three years old on your daddy's knee ofr when you were bent over in the park looking for your lost keys. that can easily be answered by viewing the movie Brainstorm. Christopher Foof Walken was on TV today,as a matter of fact. mk5000 If he is, he's in the vast minority.--george w -- http://mail.python.org/mailman/listinfo/python-list
Re: terminology question - foreign function library
[EMAIL PROTECTED] wrote in message news:[EMAIL PROTECTED] |I am prompted to make these inquiries after seeing the following link | to ctypes: | | http://docs.python.org/lib/module-ctypes.html | | in which ctypes is described as a foreign function library. | | What is the definition of foreign function library? A library for connecting to and making use of foreign functions, which are functions written in a foreign (to Python) language and usually not particularly designed with Python in mind. | Is the concept different from a package? | Is the concept different from a module? Ctypes is one particular module with the particular purpose given. A module in general can be for any purpose. Terry Jan Reedy -- http://mail.python.org/mailman/listinfo/python-list
Re: Use a Thread to reload a Module?
In article [EMAIL PROTECTED], =?ISO-8859-1?Q?Gregory_Pi=F1ero?= [EMAIL PROTECTED] wrote: That module deals with accessing data from QuickBooks, marshaling it, and providing methods to access the marshaled data. Having the server program keep that module and all of its data in memory makes the server run really fast, but yeah, it does get complicated now that it's storing 100's of MB of data. I guess most people go to a database at this point? Very, very yes. Try using a SQLite in-memory database, maybe? It's just so easy to store the data in the Python objects I already need them in instead of converting to tables in a DB and then converting back. So maybe this threading will work for me. You might well run into problems with the import lock. I strongly advise against your current approach. -- Aahz ([EMAIL PROTECTED]) * http://www.pythoncraft.com/ I support family values -- Addams family values --www.nancybuttons.com -- http://mail.python.org/mailman/listinfo/python-list
thread and command-line communicating
Hello, I'm a newbie to Python. How can I have a thread (say a Tkinter window) alongside with the command-line interpretor? I'd like to have my thread handling events and exceptions, while I do stuff in the command-line, possibly signaling the thread, or terminating it, etc. Is that possible? Thanks, Siamak -- http://mail.python.org/mailman/listinfo/python-list
Re: terminology question - foreign function library
[EMAIL PROTECTED] wrote: I am prompted to make these inquiries after seeing the following link to ctypes: http://docs.python.org/lib/module-ctypes.html in which ctypes is described as a foreign function library. What is the definition of foreign function library? Is the concept different from a package? Is the concept different from a module? Neither. If you have a library, completely unrelated to Python, but you would like to make calls into it from Python, there are several ways to proceed. (A good example of such a library is the OpenGL library: C:/WINDOWS/SYSTEM32/opengl32.dll.) You can craft an extension to Python, written in C perhaps and linked to the DLL in question, that provides functions which can be called from Python and which make the appropriate calls into the DLL. (Several products help with building of such an extension module, SWIG being the one I've used.) A newer alternative to building such extensions is ctypes. If you can discern (from the documentation) the exact calling parameters footprint to a function in a DLL, then ctypes can directly call that function with your parameters. This is done directly in Python and ctypes without the need for building any extension module. Gary Herron Thank you. -- http://mail.python.org/mailman/listinfo/python-list
module hierarchy snapshot
Hi, Is there any good tool get a snapshot of module hierarchy for custom python modules ? regards, KM -- http://mail.python.org/mailman/listinfo/python-list
Re: file/directory format/size help
On Sun, 24 Dec 2006 07:45:32 -0800, moishyyehuda wrote: Hi I am writing a script to upload images. How do I check the format of the file? How can I tell if the file is an image, movie, or text file? I would also like to put a limit on how much a user can upload. So how can I check how many bits, bytes, mb, gb are in a folder. So that sums up to #1 What type of file is the file? Is it a movie, image, or text document? In the Windows world, one simply looks at the file extension (e.g. .gif, .avi, .txt, etc.) and hopes that it is correct. In the Linux world, there is a command file that tries to guess the file type, by looking at some combination of extension and/or signature bytes inside the file. Classic Macintosh OS kept file-type metadata as part of the file system; I don't know what OS X based Macintoshes do. Why do you care what the format of the file is? Can't you let the user upload whatever file they like? #2 What particular form is the file jpeg, bmp, gif etc.? I don't understand the question. What do you mean form? #3 The size of a directory? Directories themselves generally are a fixed size, e.g. on my ext3 file system my directories are typically 4K in size. But that's probably not what you mean :-) I assume you mean the size of all the files in a directory combined. You have to get the size of each file, and add them all together. If you use Google, you will find Python code to do that. Try looking on the ActiveState Python Cookbook: http://aspn.activestate.com/ASPN/Python/Cookbook/ -- Steven. -- http://mail.python.org/mailman/listinfo/python-list
Re: file/directory format/size help
#1 What type of file is the file? Is it a movie, image, or text document? In the Windows world, one simply looks at the file extension (e.g. .gif, .avi, .txt, etc.) and hopes that it is correct. or simply use TRID: http://mark0.net/soft-trid-e.html Stef Mientki -- http://mail.python.org/mailman/listinfo/python-list
Re: Multi-line docstrings
In message [EMAIL PROTECTED], Duncan Booth wrote: Lawrence D'Oliveiro [EMAIL PROTECTED] wrote: The Python docs recommend the use of triple-quoted string literals for docstrings, e.g. def Meet(Alice, Bob) : arranges a meeting between Alice and Bob. Returns a reference to the meeting booking object. ... #end Meet However, these tend to get messed up by indentation whitespace, which gets spuriously included as part of the string. Not spuriously included: included by design, but sometimes annoying. The problem is that the treatment of indentation whitespace in triple-quoted strings is at odds with its use for syntax purposes elsewhere in the language. Instead of preserving all included whitespace, a better rule for triple-quoted strings might be to strip whitespace up to the current indentation level from each continuation line. That is, each line _must_ begin with at least that amount of whitespace, otherwise it's an error; any extra whitespace is preserved. E.g. a = two lines of text being equivalent to a = two lines\n of text Or, a simpler rule might be to strip _all_ whitespace at the start of each continuation line, regardless of indentation level. So the triple-quoted example above becomes equivalent to a = two lines\nof text If you _want_ to include some whitespace at the start of a continuation line, simply precede it by something that isn't literal whitespace: a = two lines \x20 of text becomes equivalent to a = two lines\n of text (It might be nice if \ was recognized as equivalent to \x20 for this purpose.) -- http://mail.python.org/mailman/listinfo/python-list
method names in __slots__ ??
I have stumbled across some class definitions which include all/most method names in a __slots__ declaration. A cut-down and disguised example appears at the end of this posting. Never mind the __private_variables and the getter/setter approach, look at the list of methods in the __slots__. I note that all methods in an instance of a slotted class are read-only irrespective of whether their names are included in __slots__ or not: Given a = Adder(), a.tally = 0 gets AttributeError: 'Adder' object attribute 'tally' is read-only a.notinslots = 1 gets AttributeError: 'Adder' object attribute 'notinslots' is read-only So is there some magic class-fu going down here, or is this just a waste of memory space in the instances? === example === # class with method names in __slots__ class Adder(object): __slots__ = [ # methods '__init_', 'get_foo', 'get_value', 'set_foo', 'tally', # private variables '__foo', '__value', # public variables 'bar', 'zot', ] def __init__(self, start=0): self.__value = start self.__foo = 666 self.bar = None self.zot = 42 def tally(self, amount): self.__value += amount def get_value(self): return self.__value def set_foo(self, arg): self.__foo = arg def get_foo(self): return self.__foo def notinslots(self): pass === end of example === -- http://mail.python.org/mailman/listinfo/python-list
Why does Python never add itself to the Windows path?
I've installed several different versions of Python across several different versions of MS Windows, and not a single time was the Python directory or the Scripts subdirectory added to the PATH environment variable. Every time, I've had to go through and add this by hand, to have something resembling a usable Python installation. No such problems on Linux, whether it be Mandrake/Mandriva, Fedora Core, or Kubuntu. So why is the Windows install half-crippled by default? I just rediscovered this today when trying to run one of the Turbogears scripts, but this has puzzled me for years now. -- Ben Sizer -- http://mail.python.org/mailman/listinfo/python-list
Re: Why does Python never add itself to the Windows path?
Ben Sizer wrote: I've installed several different versions of Python across several different versions of MS Windows, and not a single time was the Python directory or the Scripts subdirectory added to the PATH environment variable. Every time, I've had to go through and add this by hand, to have something resembling a usable Python installation. No such problems on Linux, whether it be Mandrake/Mandriva, Fedora Core, or Kubuntu. So why is the Windows install half-crippled by default? I just rediscovered this today when trying to run one of the Turbogears scripts, but this has puzzled me for years now. -- Ben Sizer excellent question -- http://mail.python.org/mailman/listinfo/python-list
Unescaping URLs in Python
Here's a URL from a link on the home page of a major company. a href=/adsk/servlet/index?siteID=123112amp;id=1860142About Us/a Yes, that amp; is in the source text of the page. This is, in fact, correct HTML. See http://www.htmlhelp.com/tools/validator/problems.html#amp What's the appropriate Python function to call to unescape a URL which might contain things like that? Will this interfere with the usual % type escapes in URLs? What's actually needed to get this right is something that goes from HTML escaped form to URL escaped form, because, in general, there is no unescaped form that will work for all URLs. There's htmldecode at http://zesty.ca/python/scrape.py;, which works, but this should be a standard library function. John Nagle -- http://mail.python.org/mailman/listinfo/python-list
Re: Why does Python never add itself to the Windows path?
I don't seem to have any problem running python programs regardless of where they are. My platform is windows xp and I have run both 2.4 and 2.5 more details about what version of windows you are running might be helpfull https://sourceforge.net/project/showfiles.php?group_id=156455package_id=174569 vbgunz wrote: Ben Sizer wrote: I've installed several different versions of Python across several different versions of MS Windows, and not a single time was the Python directory or the Scripts subdirectory added to the PATH environment variable. Every time, I've had to go through and add this by hand, to have something resembling a usable Python installation. No such problems on Linux, whether it be Mandrake/Mandriva, Fedora Core, or Kubuntu. So why is the Windows install half-crippled by default? I just rediscovered this today when trying to run one of the Turbogears scripts, but this has puzzled me for years now. -- Ben Sizer excellent question -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with small program
smartbei wrote: Felix Benner wrote: smartbei schrieb: Hello, I am a newbie with python, though I am having a lot of fun using it. Here is one of the excersizes I am trying to complete: the program is supposed to find the coin combination so that with 10 coins you can reach a certain amoung, taken as a parameter. Here is the current program: coins = (100,10,5,1,0.5) anslist = [] def bar(fin, hist = {100:0,10:0,5:0,1:0,0.5:0}): s = sum(x*hist[x] for x in hist) l = sum(hist.values()) if s fin and l 10: for c in coins: if (s+c) = fin: hist[c] += 1 bar(fin, hist) hist[c] -= 1 elif l==10 and s==fin and not hist in anslist: #p1 anslist.append(hist) bar(50) print anslist The problem is that if I run it, anslist prints as [{0.5: 0, 1: 0, 10: 0, 100: 0, 5: 0}], which doesnt even add up to 50. When I check how many times the program has reached the #p1 by sticking a print there, it only reaches it once, and it comes out correct. why is it that this result is replaced by the incorrect final one? hist is stored in anslist as a pointer only, therfore the hist[c] -= 1 operates on the same dict as is stored in the anslist. Try the following in the python interpreter: a = { 'key' : 1 } l = [a] l[0]['key'] -= 1 a instead use: anslist.append(dict(hist.items)) which will copy the dict. Thanks! BTW - its hist.items(), after that it worked. An alternative. cointypes = (100, 10, 5, 1, 0.5) needed = {} def coins(fin): cur = fin for c in cointypes: v = int(cur / c) if v 0: needed[c] = v cur -= v * c if __name__ == '__main__': coins(51) print needed coins(127) print needed -- http://mail.python.org/mailman/listinfo/python-list
Re: Help with small program
Better alternative. cointype = (100, 10, 5, 1, 0.5) def coins(fin): needed = {} for c in cointypes: v, r = divmod(fin, c) if v 0: needed[c] = v fin = r return needed if __name__ == '__main__': print coins(51) print coins(127) print coins[12.5) -- http://mail.python.org/mailman/listinfo/python-list
Re: Unescaping URLs in Python
In message [EMAIL PROTECTED], John Nagle wrote: Here's a URL from a link on the home page of a major company. a href=/adsk/servlet/index?siteID=123112amp;id=1860142About Us/a What's the appropriate Python function to call to unescape a URL which might contain things like that? Just use any HTML-parsing library. I think the standard Python HTMLParser will do the trick, provided there aren't any errors in the HTML. Will this interfere with the usual % type escapes in URLs? No. Just think of it as an HTML attribute value; the fact that it's a URL is a question of later interpretation, nothing to do with the fact that it comes from an HTML attribute. -- http://mail.python.org/mailman/listinfo/python-list
Re: Why does Python never add itself to the Windows path?
Hi! +1 -- @-salutations Michel Claveau -- http://mail.python.org/mailman/listinfo/python-list
How to stop program when threads is sleeping
Hi, pythoners: There is a problem I couldn't dispose. I start a thread in the my program. The thread will do something before executing time.sleep(). When the user give a signal to the main thread (such as click the 'end' button or close the window), the thread should end it's running. But how to end the threading when it's sleeping? I set an flag to the thread, but it doesn't work. I also thought to put 'time.sleep()' to the main thread. But I think the main thread will not response to user's action because it is executing sleep(). Any ideas? Thanks. -- http://mail.python.org/mailman/listinfo/python-list
Website Capture
Hi, I want to capture a web site into gif image using Python. I installed the PIL if it can help. -- http://mail.python.org/mailman/listinfo/python-list
Re: textwrap.dedent replaces tabs?
Tom Plunket wrote: Frederic Rentsch wrote: Following a call to dedent () it shouldn't be hard to translate leading groups of so many spaces back to tabs. Sure, but the point is more that I don't think it's valid to change to tabs in the first place. E.g.: input = ' ' + '\t' + 'hello\n' + '\t' + 'world' output = textwrap.dedent(input) will yield all of the leading whitespace stripped, which IMHO is a violation of its stated function. In this case, nothing should be stripped, because the leading whitespace in these two lines does not /actually/ match. Sure, it visually matches, but that's not the point (although I can understand that that's a point of contention in the interpreter anyway, I would have no problem with it not accepting 1 tab = 8 spaces for indentation... But that's another holy war. If I understand your problem, you want to restore the dedented line to its original composition if spaces and tabs are mixed and this doesn't work because the information doesn't survive dedent (). Sure, although would there be a case to be made to simply not strip the tabs in the first place? Like this, keeping current functionality and everything... (although I would think if someone wanted tabs expanded, they'd call expandtabs on the input before calling the function!): def dedent(text, expand_tabs=True): dedent(text : string, expand_tabs : bool) - string Remove any whitespace than can be uniformly removed from the left of every line in `text`, optionally expanding tabs before altering the text. This can be used e.g. to make triple-quoted strings line up with the left edge of screen/whatever, while still presenting it in the source code in indented form. For example: def test(): # end first line with \ to avoid the empty line! s = '''\ hello \t world ''' print repr(s) # prints ' hello\n\t world\n' print repr(dedent(s)) # prints ' hello\n\t world\n' if expand_tabs: text = text.expandtabs() lines = text.split('\n') margin = None for line in lines: if margin is None: content = line.lstrip() if not content: continue indent = len(line) - len(content) margin = line[:indent] elif not line.startswith(margin): if len(line) len(margin): content = line.lstrip() if not content: continue while not line.startswith(margin): margin = margin[:-1] if margin is not None and len(margin) 0: margin = len(margin) for i in range(len(lines)): lines[i] = lines[i][margin:] return '\n'.join(lines) import unittest class DedentTest(unittest.TestCase): def testBasicWithSpaces(self): input = \n Hello\n World expected = \nHello\n World self.failUnlessEqual(expected, dedent(input)) def testBasicWithTabLeadersSpacesInside(self): input = \n\tHello\n\t World expected = \nHello\n World self.failUnlessEqual(expected, dedent(input, False)) def testAllTabs(self): input = \t\tHello\n\tWorld expected = \tHello\nWorld self.failUnlessEqual(expected, dedent(input, False)) def testFirstLineNotIndented(self): input = Hello\n\tWorld expected = input self.failUnlessEqual(expected, dedent(input, False)) def testMixedTabsAndSpaces(self): input = \t Hello\n \tWorld expected = \t Hello\n \tWorld self.failUnlessEqual(expected, dedent(input, False)) if __name__ == '__main__': unittest.main() -tom! It this works, good for you. I can't say I understand your objective. (You dedent common leading tabs, except if preceded by common leading spaces (?)). Neither do I understand the existence of indentations made up of tabs mixed with spaces, but that is another topic. I have been wasting a lot of time with things of this nature coding away before forming a clear conception in my mind of what my code was supposed to accomplish. Sounds stupid. But many problems seem trivial enough at first sight to create the illusion of perfect understanding. The encounter with the devil in the details can be put off but not avoided. Best to get it over with from the start and write an exhaustive formal description of the problem. Follows an exhaustive formal description of the rules for its solution. The rules can then be morphed into code in a straightforward manner. In other words, coding should be the translation of a logical system into a language a machine understands. It should not be the construction of the logical system. This,
Re: Website Capture
On Monday 25 December 2006 00:57, [EMAIL PROTECTED] wrote: Hi, I want to capture a web site into gif image using Python. I installed the PIL if it can help. It can't be done with just Python PIL, that much is for sure. First of all you need some sort of module/program/(whatever you want to call it) that can render a given webpage. Then you would proceed to capturing the graphical output of that module/program/... Maybe what you should look into are graphical toolkits that possibly provide a HTML widget from which you can get a graphical display. WxWidgets/WxPython is one option, and the only other I can think of is GTK/pyGTK. I hope this helps a little, and Merry Christmas! - Jonathan Curran -- http://mail.python.org/mailman/listinfo/python-list
[ python-Bugs-1612113 ] Dictionary ordering docs are too unclear of dangers
Bugs item #1612113, was opened at 2006-12-09 06:57 Message generated for change (Comment added) made by ironfroggy You can respond by visiting: https://sourceforge.net/tracker/?func=detailatid=105470aid=1612113group_id=5470 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Documentation Group: None Status: Closed Resolution: Works For Me Priority: 5 Private: No Submitted By: Calvin Spealman (ironfroggy) Assigned to: Nobody/Anonymous (nobody) Summary: Dictionary ordering docs are too unclear of dangers Initial Comment: The footnote #3 on this page of the documentation details some thoughts on the order of dictionaries and the results of the different key and value retreival methods. I think it promises more than it should. The current content tells the reader they can expect consistant results from a dictionary as far as order goes, and we know this to be simply untrue and even in the circumstances where its likely (but still not impossible), such as `zip(d.values(), d.keys())` there is not even any compelling reason to use such odd methods, making the very fact that the idea is documented suspect. I recommend the footnote be removed entirely, or replaced with Keys and values are listed in an arbitrary order which is non-random, varies across Python implementations, and depends on the dictionary's history of insertions and deletions. Do not expect anything of the order of the items(), keys(), values(), iteritems(), iterkeys(), and itervalues() methods' results. Page in question: http://docs.python.org/lib/typesmapping.html -- Comment By: Calvin Spealman (ironfroggy) Date: 2006-12-24 11:27 Message: Logged In: YES user_id=112166 Originator: YES This would only fail with the use of threads or weakref callbacks, most likely. I still think thats enough reason to take them back out. Assuring any order at any time, reguardless of the circumstances, I feel, is just against the concept of the dictionary. -- Comment By: SourceForge Robot (sf-robot) Date: 2006-12-23 22:20 Message: Logged In: YES user_id=1312539 Originator: NO This Tracker item was closed automatically by the system. It was previously set to a Pending status, and the original submitter did not respond within 14 days (the time period specified by the administrator of this Tracker). -- Comment By: Tim Peters (tim_one) Date: 2006-12-09 09:51 Message: Logged In: YES user_id=31435 Originator: NO The statement that the various ways of extracting info from a dict are consistent /provided that/ they're called with no intervening modifications to the dictionary (did you miss that crucial qualification?) is part of the language definition: it definitely and deliberately constrains the set of possible implementations. The docs didn't originally say this, but people noted it was true in then-current CPython, and asked whether they could rely on it. At that point, Guido decided to elevate this property of the CPython implementation to a language requirement, and the footnote was added. Of course you're not /required/ to rely on it ;-). -- Comment By: Martin v. Löwis (loewis) Date: 2006-12-09 09:31 Message: Logged In: YES user_id=21627 Originator: NO You seem to be saying (without actually saying it) that the footnote is untrue. Can you give an example that demonstrates it is untrue? I believe the footnote is correct, precise, and complete as it stands, and fail to see a bug here. -- You can respond by visiting: https://sourceforge.net/tracker/?func=detailatid=105470aid=1612113group_id=5470 ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[ python-Bugs-1621660 ] this module (Zen of Python) docs list broken URL
Bugs item #1621660, was opened at 2006-12-24 11:30 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detailatid=105470aid=1621660group_id=5470 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Python Library Group: None Status: Open Resolution: None Priority: 5 Private: No Submitted By: Calvin Spealman (ironfroggy) Assigned to: Nobody/Anonymous (nobody) Summary: this module (Zen of Python) docs list broken URL Initial Comment: The this module, the Zen of Python, has a broken (404) URL in the docs. They link to http://www.python.org/doc/current/lib/module-this.html, which does not exist. Seems like a good place to keep the text, and any links to other resources on code beauty and such. -- You can respond by visiting: https://sourceforge.net/tracker/?func=detailatid=105470aid=1621660group_id=5470 ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com