Re: shutil.copyfile is incomplete (truncated)
The close method is defined and flushing and closing a file, so it should not return until that's done. What command are you using to create the temp file? re command to write the file: f=open(fn,'w') ... then create HTML text in a string f.write(html) f.close -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
I would consider the chance that the disk may be faulty, or the file system is corrupt. Does the problem go away if you write to a different file system or a different disk? It's a relatively new MacBook Pro with a solid state disk. I've not noticed any other disk problems. I did a repair permissions (for what it's worth). Maybe I'll have it tested at the Genius Bar. I don't have the full system on another computer to try that; but will work on that today. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
Or that the filesystem may be full? Of course, that's usually obvious more widely when it happens... Question: is the size of the incomplete file a round number? (Like a multiple of a decent sized power of 2) Also on what OS X file system type does the file being created reside, in particular, is it a network file system? File system not full (2/3 of disk is free) Source (correct one) is 47,970 bytes. Target after copy of 45,056 bytes. I've tried changing what gets written to change the file size. It is usually this sort of difference. The file system is Mac OS Extended Journaled (default as out of the box). -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
The file system is Mac OS Extended Journaled (default as out of the box). I ran a repair disk .. .while it found and fixed what it called minor problems, it did something. However, the repair did not fix the problem. I just ran the program again and the source is 47,970 bytes and target after copy if 45,056. Interestingly, the test I run just after the copy , i run a file compare: code: if showproperties: print Filecompare :,filecmp.cmp(fn,loc+fname) print Statinfo:+fn+:\n, os.stat(fn) print Statinfo:+loc+fname+:\n, os.stat(loc+fname) results: Filecompare : True Statinfo:/var/folders/p_/n5lktj2n0r938_46jyqb52g4gn/T/speakers.htm: posix.stat_result(st_mode=33188, st_ino=32205850, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=45056, st_atime=1365749178, st_mtime=1365749178, st_ctime=1365749178) Statinfo:/Users/rmschne/Documents/ScottishOilClub/SOC Board Doc Sharing Folder/Meetings/speakers.htm: posix.stat_result(st_mode=33188, st_ino=32144179, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=45056, st_atime=1365749178, st_mtime=1365749178, st_ctime=1365749178) It shows file size 45,056 on both source and target, which is the file size of the flawed target, and is not what Finder shows for source. Sigh. -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On Fri, Apr 12, 2013 at 11:57 AM, Mark Janssen dreamingforw...@gmail.com wrote: Further, I will admit that I am not deeply experienced in application or Internet programming Would you listen to someone who is, by his own admission, not experienced as a surgeon, and tries to tell you that your liver and heart would be better placed the other way around? You may well have some insight that nobody else has yet seen, but you do yourself no service by trying to argue without first-hand experience, and lots of it. I'm not going to go to a LISP mailing list and try to tell them that functional programming is better done with some different syntax, because I am not an experienced LISPer. (Dabbled in Scheme, that's about as close as I get. And only dabbled. And only because GNU LilyPond uses it.) Things are the way they are because someone's spent decades working with them. Sure, not everything's perfect... but it takes someone with actual coding experience and expertise to point out improvements. Read the python-list and python-tutor archives and listen to people like Peter Otten and Steven D'Aprano, both of whom have been using the language for, uhh... 3.5 millenia, probably. (Me? I'm a n00b. Haven't seriously used Python for even a decade yet, though I think I met it in the late 90s or early 00s. Got my coding experience on other languages.) Listen to them when they explain to people why Python is how it is, and you'll gain a much greater comprehension of what actually works. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: USBLock : lock/unlock your computer with a USB key
On Thu, Apr 11, 2013 at 9:23 AM, Ethan Furman et...@stoneleaf.us wrote: On 04/11/2013 04:13 AM, Sven wrote: Yes, I had the idea to add bluetooth too, removes the whole plugging and unplugging spiel. I might start work on that, and if anyone else wants to dive in and help, feel free. I will probably need to refactor the Listener a little, or create a USB and BT listener class. Doesn't BlueTooth have a 30 foot range? For locking I'd rather be at 10 or even 5 feet away. Pair it with a Google Glass and have it lock after you've stopped looking at the screen for 30 seconds. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On Fri, Apr 12, 2013 at 4:25 PM, Rob Schneider rmsc...@gmail.com wrote: The close method is defined and flushing and closing a file, so it should not return until that's done. What command are you using to create the temp file? re command to write the file: f=open(fn,'w') ... then create HTML text in a string f.write(html) f.close Hold it one moment... You're not actually calling close. The file's still open. Is that a copy/paste problem, or is that your actual code? In Python, a function call ALWAYS has parentheses after it. Evaluating a function's name like that returns the function (or method) object, which you then do nothing with. (You could assign it someplace, for instance, and call it later.) Try adding empty parens: f.close() and see if that solves the problem. Alternatively, look into the 'with' statement and the block syntax that it can give to I/O operations. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
In article 6eeabeb2-e6dd-49fc-bd64-8de539651...@googlegroups.com, Rob Schneider rmsc...@gmail.com wrote: The file system is Mac OS Extended Journaled (default as out of the box). It shows file size 45,056 on both source and target, which is the file size of the flawed target, and is not what Finder shows for source. Perhaps the source file has an OS X resource fork or other extended attribute metadata. shutil's copy functions won't handle those. One way to see if that is the case is to examine the source file in a terminal window with: ls -l@ $ ls -l@ test.jpg -rw-r--r--@ 1 nad staff 40359 Jul 15 2009 test.jpg com.apple.FinderInfo32 com.apple.ResourceFork 899489 -- Ned Deily, n...@acm.org -- http://mail.python.org/mailman/listinfo/python-list
Re: name lookup failure using metaclasses with unittests
Am 11.04.2013 10:19, schrieb Steven D'Aprano: if sys.version = '3': Use sys.version_info = (3,), otherwise your code breaks when upgrading to Python 10 and greater. ;^) The second question that came up was if there is a way to keep a metaclass defined inside the class or if the only way is to provide it externally. [...] Not in general, since the metaclass has to exist independently of the class. Thanks for your explanations, they are appreciated. The class is an instance of your metaclass. That means that the metaclass must exist first, so it can be instantiated when you define the class. I don't like the approach to define the code to post-process a class before defining the class. It's a bit like top-posting, it messes up the reading order. Since I really intend to post-process the class, it seems that metaclasses are simply not the right tool. At the moment, this leaves me with two options: 1. post-process the class class X: pass # attach constants to clas X for i in (1, 2, 3): setattr(X, 'f{}' % i, i) 2. generate code inline class Y: pass # generate constants in local (class-)namespace for i in (1, 2, 3): locals()['f{}' % i] = i In both cases, variables (loop variable 'i') are leaked into the surrounding namespace, which is kind-of ugly. The second approach also seems a bit hackish and I can't use the class-in-definition there, which is limiting when you want to attach e.g. constants of type X to X. Also PEP 3115 Metaclasses in Python 3000[2] seems to consider postprocessing of a class definition as better handled by a class decorator, which is something I haven't looked at yet. Generally, class decorators are less brain-melting than metaclasses. Alas, they also need to be defined before the class, messing with the mentioned order of declaration. They can be used to call a class function though which then does the necessary postprocessing... 3. post-process the class triggered with decorator def postprocess_class(cls): invoke postprocess() on the decorated object cls.postprocess() del cls.postprocess return cls @postprocess_class class Z: @classfunction def postprocess(cls): # attach constants to class for i in (1, 2, 3): setattr(cls, 'f{}' % i, i) I guess I'll stay with variant 1 for now, since it requires the least amount of code and the least amount of questions from other developers here. Thanks everybody! Uli -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On 11Apr2013 23:32, Rob Schneider rmsc...@gmail.com wrote: | Question: is the size of the incomplete file a round number? (Like | a multiple of a decent sized power of 2) [...] | Source (correct one) is 47,970 bytes. Target after copy of 45,056 | bytes. I've tried changing what gets written to change the file | size. It is usually this sort of difference. 45046 is exactly 11 * 4096. I'd say your I/O is using 4KB blocks, and the last partial block (to make it up to 47970) didn't get written (at the OS level). Earlier you wrote: | I have created a file in temp space, then use the function | shutil.copyfile(fn,loc+fname) from fn to loc+fname. and: | Yes, there is a close function call before the copy is launched. No other writes. | Does Python wait for file close command to complete before proceeding? Please show us the exact code used to make the temp file. I would guess the temp file has not been closed (or flushed) before the call to copyfile. If you're copying data to a tempfile, it will only have complete buffers (i.e. multiples of 4096 bytes) in it until the final flush or close. So I'm imagining something like: tfp = open(tempfilename, w) ... lots of tfp.write() ... shutil.copyfile(tempfilename, newfilename) Note above no flush or close of tfp. So the final incomplete I/O buffer is still in Python's memory; it hasn't been actually written to the temp file because the buffer has not been filled, and the file has not been closed. Anyway, can you show us the relevant bits of code involved? Cheers, -- Cameron Simpson c...@zip.com.au Processes are like potatoes.- NCR device driver manual -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On Friday, 12 April 2013 09:26:21 UTC+1, Cameron Simpson wrote: | Question: is the size of the incomplete file a round number? (Like | a multiple of a decent sized power of 2) [...] | Source (correct one) is 47,970 bytes. Target after copy of 45,056 | bytes. I've tried changing what gets written to change the file | size. It is usually this sort of difference. 45046 is exactly 11 * 4096. I'd say your I/O is using 4KB blocks, and the last partial block (to make it up to 47970) didn't get written (at the OS level). Earlier you wrote: | I have created a file in temp space, then use the function | shutil.copyfile(fn,loc+fname) from fn to loc+fname. and: | Yes, there is a close function call before the copy is launched. No other writes. | Does Python wait for file close command to complete before proceeding? Please show us the exact code used to make the temp file. I would guess the temp file has not been closed (or flushed) before the call to copyfile. If you're copying data to a tempfile, it will only have complete buffers (i.e. multiples of 4096 bytes) in it until the final flush or close. So I'm imagining something like: tfp = open(tempfilename, w) ... lots of tfp.write() ... shutil.copyfile(tempfilename, newfilename) Note above no flush or close of tfp. So the final incomplete I/O buffer is still in Python's memory; it hasn't been actually written to the temp file because the buffer has not been filled, and the file has not been closed. Anyway, can you show us the relevant bits of code involved? Cheers, -- Cameron Simpson c...@zip.com.au Processes are like potatoes.- NCR device driver manual Thanks for the observation. Code (simplified but results in same flaw) (which a close, far as I can tell). def CreateSpeakerList1(): import shutil import filecmp import os.path t=get_template('speaker_list.html') fn=TEMP_DIR+SOC_SPEAKER_LIST fn=tempfile.gettempdir()+/+SOC_SPEAKER_LIST f=open(fn,'w') speaker_list=Speaker.objects.order_by('status__order','targetmtg__date') print Creating + SOC_SPEAKER_LIST + ... html=(smart_str(t.render(Context( { 'css_include_file':CSS_INCLUDE_FILE, 'css_link':False, 'title': ORG_NAME+ Speaker List, 'speaker_list': speaker_list, } f.write(html) f.close print Wrote +fn shutil.copyfile(fn,SOC_GENERAL_OUTPUT_FOLDER+SOC_SPEAKER_LIST) print Filecompare :,filecmp.cmp(fn,SOC_GENERAL_OUTPUT_FOLDER+SOC_SPEAKER_LIST) print Statinfo:+fn+:\n, os.stat(fn) print Statinfo:+SOC_GENERAL_OUTPUT_FOLDER+SOC_SPEAKER_LIST+\n, os.stat(SOC_GENERAL_OUTPUT_FOLDER+SOC_SPEAKER_LIST) return Output on latest run: Creating speakers.htm ... Wrote /var/folders/p_/n5lktj2n0r938_46jyqb52g4gn/T/speakers.htm Filecompare : True Statinfo:/var/folders/p_/n5lktj2n0r938_46jyqb52g4gn/T/speakers.htm: posix.stat_result(st_mode=33188, st_ino=32332374, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=45056, st_atime=1365758139, st_mtime=1365758139, st_ctime=1365758139) Statinfo:/Users/rmschne/Documents/ScottishOilClub/Output/speakers.htm posix.stat_result(st_mode=33188, st_ino=32143886, st_dev=16777218L, st_nlink=1, st_uid=501, st_gid=20, st_size=45056, st_atime=1365758029, st_mtime=1365758139, st_ctime=1365758139) -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On Fri, Apr 12, 2013 at 7:18 PM, Rob Schneider rmsc...@gmail.com wrote: f.close Yep, there's the problem! See my previous post for details. Change this to: f.close() and you should be sorted. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 12/04/2013 02:57, Mark Janssen wrote: [dross snipped] A summary here http://pinterest.com/pin/464293042804330899/ -- If you're using GoogleCrap™ please read this http://wiki.python.org/moin/GoogleGroupsPython. Mark Lawrence -- http://mail.python.org/mailman/listinfo/python-list
Re: USBLock : lock/unlock your computer with a USB key
On Fri, Apr 12, 2013 at 6:16 AM, Ian Kelly ian.g.ke...@gmail.com wrote: On Thu, Apr 11, 2013 at 9:23 AM, Ethan Furman et...@stoneleaf.us wrote: On 04/11/2013 04:13 AM, Sven wrote: Yes, I had the idea to add bluetooth too, removes the whole plugging and unplugging spiel. I might start work on that, and if anyone else wants to dive in and help, feel free. I will probably need to refactor the Listener a little, or create a USB and BT listener class. Doesn't BlueTooth have a 30 foot range? For locking I'd rather be at 10 or even 5 feet away. I guess it depends on your needs, I'd want it locked when i wander out of the office. Pair it with a Google Glass and have it lock after you've stopped looking at the screen for 30 seconds. That would be awesome. -- http://mail.python.org/mailman/listinfo/python-list -- The UNIX system has a command, nice ... in order to be nice to the other users. Nobody ever uses it. - Andrew S. Tanenbaum -- http://mail.python.org/mailman/listinfo/python-list
Re: Message passing syntax for objects | OOPv2
On 4/11/2013 9:57 PM, Mark Janssen wrote: Okay peeps, I'm re-opening this thread, because despite being hijacked by naysayers, the merit of the underlying idea I think still has not been communicated or perceived adequately. Mark, this proposal is out of place on a Python list, because it proposes an object methodology radically different from any that is implemented in Python now, or is even remotely likely to be implemented in Python in the future. Everyone else, there's no need to skewer Mark for off-topic things like tweets on topics other than Python. We can be civil, surely. --Ned. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On Friday, 12 April 2013 10:22:21 UTC+1, Chris Angelico wrote: On Fri, Apr 12, 2013 at 7:18 PM, Rob Schneider rmsc...@gmail.com wrote: f.close Yep, there's the problem! See my previous post for details. Change this to: f.close() and you should be sorted. ChrisA Slapping forehead ... hard. Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On 12/04/2013 13:07, Rob Schneider wrote: On Friday, 12 April 2013 10:22:21 UTC+1, Chris Angelico wrote: On Fri, Apr 12, 2013 at 7:18 PM, Rob Schneider rmsc...@gmail.com wrote: f.close Yep, there's the problem! See my previous post for details. Change this to: f.close() and you should be sorted. ChrisA Slapping forehead ... hard. Thanks! a) We've all done it :) b) The print function/statement or Python's interactive mode are awesome in situations like this. -- If you're using GoogleCrap™ please read this http://wiki.python.org/moin/GoogleGroupsPython. Mark Lawrence -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
Someone HEELP ME!! -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
On Fri, Apr 12, 2013 at 10:50 PM, nagia.rets...@gmail.com wrote: Someone HEELP ME!! http://youtu.be/VxMYwjp8t0o ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
Τη Παρασκευή, 12 Απριλίου 2013 4:14:39 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε: On Fri, Apr 12, 2013 at 10:50 PM, nagia.rets...@gmail.com wrote: Someone HEELP ME!! http://youtu.be/VxMYwjp8t0o ChrisA Well, instead of being a smartass it would be nice if you could actually help for once. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
On Fri, Apr 12, 2013 at 11:18 PM, nagia.rets...@gmail.com wrote: Τη Παρασκευή, 12 Απριλίου 2013 4:14:39 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε: On Fri, Apr 12, 2013 at 10:50 PM, nagia.rets...@gmail.com wrote: Someone HEELP ME!! http://youtu.be/VxMYwjp8t0o ChrisA Well, instead of being a smartass it would be nice if you could actually help for once. Yeah, I'm done with that. Your whining ran through my patience a few posts ago. But you should feel special; I clipped that just for you. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
On Apr 12, 6:18 pm, nagia.rets...@gmail.com wrote: Τη Παρασκευή, 12 Απριλίου 2013 4:14:39 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε: On Fri, Apr 12, 2013 at 10:50 PM, nagia.rets...@gmail.com wrote: Someone HEELP ME!! http://youtu.be/VxMYwjp8t0o ChrisA Well, instead of being a smartass it would be nice if you could actually help for once. Interesting! Among the things which you dont seem to know is the meaning of the word 'once'. -- http://mail.python.org/mailman/listinfo/python-list
Re: USBLock : lock/unlock your computer with a USB key
On 11.04.2013 22:16, Ian Kelly wrote: On Thu, Apr 11, 2013 at 9:23 AM, Ethan Furman et...@stoneleaf.us wrote: On 04/11/2013 04:13 AM, Sven wrote: Yes, I had the idea to add bluetooth too, removes the whole plugging and unplugging spiel. I might start work on that, and if anyone else wants to dive in and help, feel free. I will probably need to refactor the Listener a little, or create a USB and BT listener class. Doesn't BlueTooth have a 30 foot range? For locking I'd rather be at 10 or even 5 feet away. Pair it with a Google Glass and have it lock after you've stopped looking at the screen for 30 seconds. Maybe not with Google Glass, but with a web cam placed on top of the screen. Like Samsung does since the Galaxy S III. There it just happens the other way round: no lock as long as you have your face in front of the phone. bg, Johannes -- GLOBE Development GmbH Königsberger Strasse 260 48157 MünsterGLOBE Development GmbH Königsberger Strasse 260 48157 Münster 0251/5205 390 -- http://mail.python.org/mailman/listinfo/python-list
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
On 2013-04-11 19:58, Cousin Stanley wrote: someone wrote: I want to put this table into an appropriate container such that afterwards I want to: 1) Put the data into a mySql-table You might consider using sqlite3 as a database manager since it is batteries included with python The stand-alone sqlite interpreter can first be used to create an empty database named some.sql3 and create a table named xdata in that data base sqlite3 some.sql3 '.read xdata_create.sql' where the file xdata_create.sql contains create table xdata ( xdate integer , xtime integer , col1 real , col2 integer , col3 integer , col4 real , col5 integer , col6 integer ) ; Oh, thank you very much! Now I understand this (I haven't really worked much with sql before, so this was/is new to me, thanks!). The csv data file can then be inserted into the xdata table in the some.sql3 database via python and ... # python data selection example # for column 4 between 8 and 9 I combined both code snippets into: == #!/usr/bin/python import sqlite3 as DBM import ipdb fs = open( 'some.csv' ) ls = [ ] dbc = DBM.connect( 'some.sql3' ) cur = dbc.cursor() if 0: sql = 'insert into xdata values( ? , ? , ? , ? , ? , ? , ? , ? )' for row in fs : dt, col1, col2, col3, col4,col5, col6 = row.strip().split(',' ) xdate , xtime = dt.split( 'T' ) xtuple = ( xdate, xtime, col1, col2, col3, col4, col5, col6 ) cur.execute( sql , xtuple ) dbc.commit() else: list_sql = [ 'select xtime , col4' , 'from xdata' , 'where xtime = 8 and xtime = 9 ; ' ] str_sql = '\n'.join( list_sql ) cur.execute( str_sql ) for row in cur : #ipdb.set_trace() # I get: TypeError: tuple indices must be integers, not str # ipdb row says: (8, 46120.0) #print row[ 'xtime' ] , row[ 'col4' ] print row[0] , row[1] fs.close() dbc.close() == I don't fully understand it yet, but it's nice to see that it works! Thank you very much for that! Now I'll have to concentrate on figuring out how/why it works :-) You can be creative with the data selections and pass them off to be plotted as needed Yes, I understand. Thank you very much. As you can see, on my system I had to use: print row[0] , row[1] instead of: print row[ 'xtime' ] , row[ 'col4' ] I'm not sure exactly why - is it because you have another version of sqlite3 ? This is a bit strange, but anyway I can live with that - at least for now... If mysql is used instead of sqlite3 you should only have to monkey with the data type declarations in xdata_create.sql and the dbc.connect strings in the python code Actually I didn't knew anything about this sqlite3 before now. This is the first time I try it out, so I don't really know what's the difference between sqlite3 and mysql... But thank you very much for providing some code I can now study and learn from !!! Much appreciated -- http://mail.python.org/mailman/listinfo/python-list
Re: Functional vs. Object oriented API
In article 51678b94$0$29977$c3e8da3$54964...@news.astraweb.com, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: - If you have a complicated interface, or data with complicated internal state, the best solution is to use a custom object with methods. - But if your interface is simple, and the data is simple, it is more efficient to stick to lightweight built-ins [...] - If the *only* reason you use a class is to keep the data together, that's very much a Java design. As part of our initial interview screen, we give applicants some small coding problems to do. One of the things we see a lot is what you could call Java code smell. This is our clue that the person is really a Java hacker at heart who just dabbles in Python but isn't really fluent. It's kind of like how I can walk into a Spanish restaurant and order dinner or enquire where the men's room is, but everybody knows I'm a gringo as soon as I open my mouth. It's not just LongVerboseFunctionNamesInCamelCase(). Nor is it code that looks like somebody bought the Gang of Four patterns book and is trying to get their money's worth out of the investment. The real dead giveaway is when they write classes which contain a single static method and nothing else. That being said, I've noticed in my own coding, it's far more often that I start out writing some functions and later regret not having initially made it a class, than the other way around. That's as true in my C++ code as it is in my Python. In my mind, classes are all about data. If there's no data (i.e. no stored state), you should be thinking a collection of functions. On the other hand, if there's ONLY data and no behavior, then you should be thinking namedtuple (which is really just a shortcut way to write a trivial class). Once you start having state (i.e. data) and behavior (i.e. functions) in the same thought, then you need a class. If you find yourself passing the same bunch of variables around to multiple functions, that's a hint that maybe there's a class struggling to be written. -- http://mail.python.org/mailman/listinfo/python-list
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
On 2013-04-11 20:44, Cousin Stanley wrote: Cousin Stanley wrote: The stand-alone sqlite interpreter can first be used to create an empty database named some.sql3 and create a table named xdata in that data base sqlite3 some.sql3 '.read xdata_create.sql' This step can also be done in python without using the stand-alone sqlite interpreter Ah, that's great (and even better so I don't have to create the xdata_create.sql file) - thank you! I collected what you wrote and put together this script: = #!/usr/bin/python import sqlite3 as DBM import ipdb # ls = [ ] # this seems to be un-used ? dbc = DBM.connect( 'some.sql3' ) cur = dbc.cursor() fs = open( 'some.csv' ) if 0: # select whether to create new database file or query from it? if 0: # switch between create table xdata and ... if not exists list_sql = [ 'create table xdata ', '( ', ' xdate integer , ', ' xtime integer , ', ' col1 real , ', ' col2 integer , ', ' col3 integer , ', ' col4 real , ', ' col5 integer , ', ' col6 integer ', ') ;' ] else: list_sql = [ 'create table if not exists xdata ' , '( ' , ' xdate integer , ' , ' xtime integer , ' , ' col1 real, ' , ' col2 integer , ' , ' col3 integer , ' , ' col4 real, ' , ' col5 integer , ' , ' col6 integer ' , ') ; ' ] # - str_sql = '\n'.join( list_sql ) cur.execute( str_sql ) # - # Insert data from input file fs (some.csv) sql = 'insert into xdata values( ? , ? , ? , ? , ? , ? , ? , ? )' for row in fs : dt, col1, col2, col3, col4,col5, col6 = row.strip().split(',' ) xdate , xtime = dt.split( 'T' ) xtuple = ( xdate, xtime, col1, col2, col3, col4, col5, col6 ) cur.execute( sql , xtuple ) dbc.commit() else: list_sql = [ 'select xtime , col4' , 'from xdata' , 'where xtime = 8 and xtime = 81104 ; ' ] str_sql = '\n'.join( list_sql ) cur.execute( str_sql ) for row in cur : #ipdb.set_trace() # I get: TypeError: tuple indices must be integers, not str # ipdb row says: (8, 46120.0) #print row[ 'xtime' ] , row[ 'col4' ] print row[0] , row[1] fs.close() dbc.close() = I think I can learn a lot from google, based on this code - I'm very grateful for your help! Now I just need to make a nice interface and couple it to matplotlib, so it's easy to plot - I think there's a good chance that I can come up with a good solution from here, based on the help I got from you people... Thanks again! -- http://mail.python.org/mailman/listinfo/python-list
CSV to matrix array
Hello! I have a CSV file with 20 rows and 12 columns and I need to store it as a matrix. I already created an array with zeros, but I don't know how to fill it with the data from the csv file. I have this script: import numpy from numpy import array from array import * import csv input = open('Cenarios.csv','r') cenario = csv.reader(input) array=numpy.zeros([20, 12]) I know I have to use for loops but I don't know how to use it to put the data the way I want. Can you help me? Thanks! -- http://mail.python.org/mailman/listinfo/python-list
Re: Functional vs. Object oriented API
On 04/12/2013 10:19 AM, Roy Smith wrote: As part of our initial interview screen, we give applicants some small coding problems to do. One of the things we see a lot is what you could call Java code smell. This is our clue that the person is really a Java hacker at heart who just dabbles in Python but isn't really fluent. It's kind of like how I can walk into a Spanish restaurant and order dinner or enquire where the men's room is, but everybody knows I'm a gringo as soon as I open my mouth. It's not just LongVerboseFunctionNamesInCamelCase(). Nor is it code that looks like somebody bought the Gang of Four patterns book and is trying to get their money's worth out of the investment. The real dead giveaway is when they write classes which contain a single static method and nothing else. That being said, I've noticed in my own coding, it's far more often that I start out writing some functions and later regret not having initially made it a class, than the other way around. I've absolutely noticed the same thing for myself, over and over again. I can't remember writing a class that I've regretted is not a few functions, although it must have happened a few times. -m -- Lark's Tongue Guide to Python: http://lightbird.net/larks/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
Τη Παρασκευή, 12 Απριλίου 2013 4:29:51 μ.μ. UTC+3, ο χρήστης rusi έγραψε: On Apr 12, 6:18 pm, nagia.rets...@gmail.com wrote: Τη Παρασκευή, 12 Απριλίου 2013 4:14:39 μ.μ. UTC+3, ο χρήστης Chris Angelico έγραψε: On Fri, Apr 12, 2013 at 10:50 PM, nagia.rets...@gmail.com wrote: Someone HEELP ME!! http://youtu.be/VxMYwjp8t0o ChrisA Well, instead of being a smartass it would be nice if you could actually help for once. Interesting! Among the things which you dont seem to know is the meaning of the word 'once'. Same applies for you too. Stop being smartasses. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
In article mailman.506.1365751267.3114.python-l...@python.org, Rob Schneider rmsc...@gmail.com wrote: Source (correct one) is 47,970 bytes. Target after copy of 45,056 bytes. I've tried changing what gets written to change the file size. It is usually this sort of difference. The file system is Mac OS Extended Journaled (default as out of the box). Is it always the tail end of the file that gets truncated, or is it missing (or mutating) data in the middle of the file? I'm just grasping at straws here, but maybe it's somehow messing up line endings (turning CRLF pairs into just LF), or using some other kind of encoding for unicode characters? If you compare the files with cmp, does it say: $ cmp original truncated cmp: EOF on truncated that's what I would expect if it's a strict truncation. If it says anything else, you've got a data munging problem. What I would normally do around this time is run a system call trace on the process to watch all the descriptor related (i.e. open, create, write) system calls. On OSX, that means dtruss. Unfortunately, I'm not that familiar with the OSX variant so I can't give you specific advice about which options to use. When you can see the system calls, you know exactly what your process is doing. You should be able to see the output file being opened and a descriptor returned, then find all the write() calls to that descriptor. You'll also be able to find any other system calls on that pathname after the descriptor is closed. Please report back what you find! Oh, another trick you might want to try is making the output file path /dev/stdout and redirecting the output into a file with the shell. See if that makes any difference. Or, try something like (assuming the -o option to your script sets the output filename): python my_prog.py -o /dev/stdout | dd bs=1 of=xxx That will do a couple of things. First, dd will report how many bytes it read and wrote, so you can see if that's the correct number. Also, since your process will no longer be writing to a real file, if anything is doing something weird like a seek() after you're done writing, that will fail since you can't seek() on a pipe. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On 4/12/2013 3:32 AM, Chris Angelico wrote: On Fri, Apr 12, 2013 at 4:25 PM, Rob Schneider rmsc...@gmail.com wrote: The close method is defined and flushing and closing a file, so it should not return until that's done. What command are you using to create the temp file? re command to write the file: f=open(fn,'w') ... then create HTML text in a string f.write(html) f.close Hold it one moment... You're not actually calling close. The file's still open. Is that a copy/paste problem, or is that your actual code? In Python, a function call ALWAYS has parentheses after it. Evaluating a function's name like that returns the function (or method) object, which you then do nothing with. (You could assign it someplace, for instance, and call it later.) Try adding empty parens: f.close() and see if that solves the problem. Alternatively, look into the 'with' statement and the block syntax that it can give to I/O operations. I say *definitely* use a 'with' statement. Part of its purpose is to avoid close bugs. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
In article mailman.510.1365755188.3114.python-l...@python.org, Cameron Simpson c...@zip.com.au wrote: 45046 is exactly 11 * 4096. I'd say your I/O is using 4KB blocks, and the last partial block (to make it up to 47970) didn't get written (at the OS level). Yeah, this sounds like a good diagnosis. BTW, the dtruss command I recommended in my earlier post would confirm this. But, to be honest, it's such a likely scenario that it hardly needs confirmation. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
In article 51674ffc$0$29977$c3e8da3$54964...@news.astraweb.com, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: On Thu, 11 Apr 2013 19:55:53 +, Neil Cerutti wrote: On 2013-04-11, Rob Schneider rmsc...@gmail.com wrote: Thanks. Yes, there is a close function call before the copy is launched. No other writes. Does Python wait for file close command to complete before proceeding? The close method is defined and flushing and closing a file, so it should not return until that's done. But note that done in this case means the file system thinks it is done, not *actually* done. Hard drives, especially the cheaper ones, lie. They can say the file is written when in fact the data is still in the hard drive's internal cache and not written to the disk platter. Also, in my experience, hardware RAID controllers will eat your data, and then your brains when you try to diagnose the problem. I would consider the chance that the disk may be faulty, or the file system is corrupt. Does the problem go away if you write to a different file system or a different disk? It is *possible* that this is the problem, but it's really way far out on the long tail of possibilities. If the file system were corrupted or the disk faulty, the odds are you would be seeing all sorts of other problems. And this would not be anywhere near as repeatable as the OP is describing. Think horses, not zebras. -- http://mail.python.org/mailman/listinfo/python-list
Re: name lookup failure using metaclasses with unittests
On 4/12/2013 3:17 AM, Ulrich Eckhardt wrote: Am 11.04.2013 10:19, schrieb Steven D'Aprano: if sys.version = '3': Use sys.version_info = (3,), otherwise your code breaks when upgrading to Python 10 and greater. ;^) The second question that came up was if there is a way to keep a metaclass defined inside the class or if the only way is to provide it externally. [...] Not in general, since the metaclass has to exist independently of the class. Thanks for your explanations, they are appreciated. The class is an instance of your metaclass. That means that the metaclass must exist first, so it can be instantiated when you define the class. I don't like the approach to define the code to post-process a class before defining the class. It's a bit like top-posting, it messes up the reading order. Since I really intend to post-process the class, it seems that metaclasses are simply not the right tool. Using a post-processing object as a metaclass or decorator necessarily requires predefinition. Such objects are usually used more than once. For one-off postprocessing, I probably would not bother. At the moment, this leaves me with two options: 1. post-process the class class X: pass # attach constants to clas X for i in (1, 2, 3): setattr(X, 'f{}' % i, i) 2. generate code inline class Y: pass # generate constants in local (class-)namespace for i in (1, 2, 3): locals()['f{}' % i] = i Mutating class locals() currently works in CPython, but is explicitly not guaranteed to work by the language definition. In both cases, variables (loop variable 'i') are leaked into the surrounding namespace, which is kind-of ugly. The second approach also seems a bit hackish and I can't use the class-in-definition there, which is limiting when you want to attach e.g. constants of type X to X. Also PEP 3115 Metaclasses in Python 3000[2] seems to consider postprocessing of a class definition as better handled by a class decorator, which is something I haven't looked at yet. Generally, class decorators are less brain-melting than metaclasses. Alas, they also need to be defined before the class, messing with the mentioned order of declaration. They can be used to call a class function though which then does the necessary postprocessing... 3. post-process the class triggered with decorator def postprocess_class(cls): invoke postprocess() on the decorated object cls.postprocess() del cls.postprocess return cls @postprocess_class class Z: @classfunction def postprocess(cls): # attach constants to class for i in (1, 2, 3): setattr(cls, 'f{}' % i, i) I guess I'll stay with variant 1 for now, since it requires the least amount of code and the least amount of questions from other developers here. -- http://mail.python.org/mailman/listinfo/python-list
ANN: psutil 0.7.0 released
Hi there folks, I'm pleased to announce the 0.7.0 release of psutil: http://code.google.com/p/psutil/ This is mainly a bugfix release addressing a couple of high priority issues on Linux and FreeBSD. Complete list of bugfixes and enhancements is here: https://psutil.googlecode.com/hg/HISTORY === New features === - psutil.get_boot_time() - get/set process IO priority on Windows - psutil.cpu_times() on Linux now includes new 'steal', 'guest' and guest_nice' fields available on recent kernels - psutil.cpu_times_percent() which provides utilization percentages for each specific CPU time as is returned by cpu_times() - source code has been migrated from SVN to Mercurial === Compatitility notes === - Process cmdline and ppid properties are no longer cached after first access - psutil.error module is deprecated and scheduled for removal === Links === - Home: http://code.google.com/p/psutil - Sources: http://psutil.googlecode.com/files/psutil-0.7.0.tar.gz - Docs: http://code.google.com/p/psutil/wiki/Documentation Please try out this new release and let me know if you experience any problem by filing issues on the bug tracker. Thanks in advance. --- Giampaolo Rodola' http://code.google.com/p/pyftpdlib/ http://code.google.com/p/psutil/ http://code.google.com/p/pysendfile/ -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
In article mailman.511.1365758300.3114.python-l...@python.org, Rob Schneider rmsc...@gmail.com wrote: f.close Well, there's your problem. You're not calling close. You forgot the ()'s after the function name! -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
On 12/04/2013 15:22, Ana Dionísio wrote: Hello! I have a CSV file with 20 rows and 12 columns and I need to store it as a matrix. I already created an array with zeros, but I don't know how to fill it with the data from the csv file. I have this script: import numpy from numpy import array from array import * import csv input = open('Cenarios.csv','r') cenario = csv.reader(input) array=numpy.zeros([20, 12]) I know I have to use for loops but I don't know how to use it to put the data the way I want. Can you help me? Thanks! I'm no expert on numpy but there is a loadtxt function see http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html -- If you're using GoogleCrap™ please read this http://wiki.python.org/moin/GoogleGroupsPython. Mark Lawrence -- http://mail.python.org/mailman/listinfo/python-list
Re: ANN: psutil 0.7.0 released
In article mailman.525.1365778885.3114.python-l...@python.org, Giampaolo Rodolà g.rod...@gmail.com wrote: Hi there folks, I'm pleased to announce the 0.7.0 release of psutil: http://code.google.com/p/psutil/ I see a lot of these types of announcements. May I suggest that people add a short description of what that package is. From the name, I can't tell is this is about process status, or PostScript, or what. In this case, after clicking on the link, I see that psutil is [...] for retrieving information on all running processes and system utilization. Putting that one-liner up front in the announcement makes it easier for people to know if it's worth exploring further. -- http://mail.python.org/mailman/listinfo/python-list
Re: Functional vs. Object oriented API
Roy Smith r...@panix.com As part of our initial interview screen, we give applicants some small coding problems to do. One of the things we see a lot is what you could call Java code smell. This is our clue that the person is really a Java hacker at heart who just dabbles in Python but isn't really fluent. ... It's not just LongVerboseFunctionNamesInCamelCase(). Nor is it code that looks like somebody bought the Gang of Four patterns book and is trying to get their money's worth out of the investment. The real dead giveaway is when they write classes which contain a single static method and nothing else. I may have some lingering Java smell myself, although I've been working mostly in Python lately, but my reaction here is that's really I don't know BASIC smell or something; a class that contains a single static method and nothing else isn't wonderful Java design style either. That being said, I've noticed in my own coding, it's far more often that I start out writing some functions and later regret not having initially made it a class, than the other way around. That's as true in my C++ code as it is in my Python. Definitely. Once you start having state (i.e. data) and behavior (i.e. functions) in the same thought, then you need a class. If you find yourself passing the same bunch of variables around to multiple functions, that's a hint that maybe there's a class struggling to be written. And I think equally to the point, even if you have only data, or only functions, right now, if the thing in question has that thing-like feel to it :) you will probably find yourself with both before you're done, so you might as well make it a class now... DC -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
Steven D'Aprano於 2013年4月12日星期五UTC+8上午8時06分21秒寫道: On Thu, 11 Apr 2013 19:55:53 +, Neil Cerutti wrote: On 2013-04-11, Rob Schneider rmsc...@gmail.com wrote: Thanks. Yes, there is a close function call before the copy is launched. No other writes. Does Python wait for file close command to complete before proceeding? The close method is defined and flushing and closing a file, so it should not return until that's done. But note that done in this case means the file system thinks it is done, not *actually* done. Hard drives, especially the cheaper ones, lie. They can say the file is written when in fact the data is still in the hard drive's internal cache and not written to the disk platter. Also, in my experience, hardware RAID controllers will eat your data, and then your brains when you try to diagnose the problem. Don't you model this as a non-blocking operation in your program? I would consider the chance that the disk may be faulty, or the file system is corrupt. Does the problem go away if you write to a different file system or a different disk? -- Steven Back-ups and read-back verifications are important for those who care. -- http://mail.python.org/mailman/listinfo/python-list
Re: ANN: psutil 0.7.0 released
Roy Smith, 12.04.2013 17:33: Giampaolo Rodol� wrote: Hi there folks, I'm pleased to announce the 0.7.0 release of psutil: http://code.google.com/p/psutil/ I see a lot of these types of announcements. May I suggest that people add a short description of what that package is. From the name, I can't tell is this is about process status, or PostScript, or what. And while we're at it, there's also a dedicated mailing list for Python related announcements, which people commonly use for announcing important releases of software packages: http://mail.python.org/mailman/listinfo/python-announce-list (And no, it's not that the unimportant ones should go here...) Stefan -- http://mail.python.org/mailman/listinfo/python-list
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
someone wrote: As you can see, on my system I had to use: print row[0] , row[1] instead of: print row[ 'xtime' ] , row[ 'col4' ] I'm not sure exactly why The magic there is setting up the row_factory after the database connection dbc = DBM.connect( 'some.sql3' ) dbc.row_factory = DBM.Row I don't really know what's the difference between sqlite3 and mysql... MySQL is used through a client/server system where the db server is always running and client processes submit requests to it in the form of sql statements SQLite is used as a stand-alone single process with no external server involved Both speak sql but there are some differences mostly in data base connection strings and data type declarations Basic sql selection is select these fields from these files where these conditions are met And that part of sql doesn't vary much among different data base managers -- Stanley C. Kitching Human Being Phoenix, Arizona -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
Hi, thanks for yor answer! ;) Anyone has more suggestions? -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
- Original Message - Hello! I have a CSV file with 20 rows and 12 columns and I need to store it as a matrix. I already created an array with zeros, but I don't know how to fill it with the data from the csv file. I have this script: import numpy from numpy import array from array import * import csv input = open('Cenarios.csv','r') cenario = csv.reader(input) array=numpy.zeros([20, 12]) I know I have to use for loops but I don't know how to use it to put the data the way I want. Can you help me? Thanks! did you try array = numpy.array(list(cenario)) ? JM -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
That only puts the data in one column, I wanted to separate it. For example: data in csv file: 1 2 3 4 5 7 8 9 10 11 a b c d e I wanted an array where I could pick an element in each position. In the case above if I did print array[0][3] it would pick 4 -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
On Apr 12, 10:12 pm, Ana Dionísio anadionisio...@gmail.com wrote: Hi, thanks for yor answer! ;) Anyone has more suggestions? My suggestions: 1. Tell us what was lacking in Mark's suggestion (to use loadtxt) 2. Read his postscript (for googlegroup posters). [In case you did not notice your posts are arriving in doubles] -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
On 04/12/2013 01:29 PM, Ana Dionísio wrote: That only puts the data in one column, I wanted to separate it. For example: data in csv file: 1 2 3 4 5 7 8 9 10 11 a b c d e I wanted an array where I could pick an element in each position. In the case above if I did print array[0][3] it would pick 4 I know nothing about numpy. How about something like: import csv myreader = csv.reader() mylist = list(myreader) Presumably you can fill in the details. Anyway, I think this will give you a list of lists, and perhaps you can convert that to a numpy array, if you really need one of those. -- DaveA -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
On Fri, Apr 12, 2013 at 8:36 AM, nagia.rets...@gmail.com wrote: Τη Παρασκευή, 12 Απριλίου 2013 4:29:51 μ.μ. UTC+3, ο χρήστης rusi έγραψε: On Apr 12, 6:18 pm, nagia.rets...@gmail.com wrote: Well, instead of being a smartass it would be nice if you could actually help for once. Interesting! Among the things which you dont seem to know is the meaning of the word 'once'. Same applies for you too. Stop being smartasses. Please keep in mind that this is a community of volunteers. Nobody here is being paid for their time to help you fix your website, and if you manage to irritate us in the process, we're likely to just walk away from it. I looked over the code that you have provided us with, and based on that I could not see any reason why the html would be in the form of a bytes instead of a str. Since nobody else here seems to have any further insight into the problem either, you're just going to have to find a a way to debug the code. If you cannot do that on your own, then I suggest that you find a contractor who can, hire them, and grant them the access they need to do a real debugging session. I would also recommend that in the future you should stop deploying untested code to your production website. Set up a development environment for yourself, make the changes there, and only deploy when you know that everything is working. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
In article mailman.533.1365792239.3114.python-l...@python.org, Ian Kelly ian.g.ke...@gmail.com wrote: I would also recommend that in the future you should stop deploying untested code to your production website. Set up a development environment for yourself, make the changes there, and only deploy when you know that everything is working. But that takes all the fun out of it :-) -- http://mail.python.org/mailman/listinfo/python-list
Re: im.py: a python communications tool
On Fri, Apr 12, 2013 at 12:46 PM, Prasad, Ramit ramit.pra...@jpmorgan.com wrote: Mark Janssen wrote: But you see, there's the critical difference. First of all you're making two errors in your comparison. Firstly, a *person* is saying that she's going to *do something for you*. She's making a promise. If I put a piece of software online -- you're taking it! That's #1 (!) Theoretically isn't putting a piece of software online akin to publishing it? Following that logic, then there is the possibility of arguing an implicit promise that the software does what it is supposed to. Any bugs would be the responsibility of the developer. It is akin to publishing it. The law has not made a good distinction about responsibility in this area. But I'm telling you that unless money is exchanged THERE IS NO AGREEMENT MADE, implicit or otherwise. If there is no agreement, then another party can't blame you for something you didn't promise. Otherwise, I can blame you for insulting my fashion sense. On a separate note, even if the judgment supports your view and the developer is never responsible for damages, will you still not be responsible for any court/lawyer fees? If someone brings you to court and fails to make their case, they've inconvenienced everyone. The fair thing would be for the court to require them to pay for your fees. And getting those fees paid by suitor will likely be another court case. Possibily, but don't accept this view of the legal system. Judges can be quite reasonable. They don't want more time taken for bullshit cases and would much prefer for things to be settled (that is what their duty is -- to settle matters, not to make lawyers wealthy). Mark -- http://mail.python.org/mailman/listinfo/python-list
Re: im.py: a python communications tool
On 2013-04-12, Mark Janssen dreamingforw...@gmail.com wrote: Possibily, but don't accept this view of the legal system. Judges can be quite reasonable. They don't want more time taken for bullshit cases and would much prefer for things to be settled (that is what their duty is -- to settle matters, not to make lawyers wealthy). Wishful thinking is the wrong way to approach any legal matter. -- Neil Cerutti -- http://mail.python.org/mailman/listinfo/python-list
RE: im.py: a python communications tool
Mark Janssen wrote: It doesn't have to say so, if it's not charging any money -- there's no expectation that you're getting anything at all! Of course there is. If Oprah Winfrey stands up and publicly says that she's giving you a car, FOR FREE, no strings attached, and then gives you a piece of old bubblegum, you have standing to sue for breach of promise. If she gives you the car, but puts it down as a *prize* rather than a gift, then there is a big, hefty string attached: income tax. But you see, there's the critical difference. First of all you're making two errors in your comparison. Firstly, a *person* is saying that she's going to *do something for you*. She's making a promise. If I put a piece of software online -- you're taking it! That's #1 (!) Theoretically isn't putting a piece of software online akin to publishing it? Following that logic, then there is the possibility of arguing an implicit promise that the software does what it is supposed to. Any bugs would be the responsibility of the developer. On a separate note, even if the judgment supports your view and the developer is never responsible for damages, will you still not be responsible for any court/lawyer fees? And getting those fees paid by suitor will likely be another court case. ~Ramit This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email. -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
Τη Παρασκευή, 12 Απριλίου 2013 9:37:29 μ.μ. UTC+3, ο χρήστης Ian έγραψε: On Fri, Apr 12, 2013 at 8:36 AM, nagia.rets...@gmail.com wrote: Τη Παρασκευή, 12 Απριλίου 2013 4:29:51 μ.μ. UTC+3, ο χρήστης rusi έγραψε: On Apr 12, 6:18 pm, nagia.rets...@gmail.com wrote: Well, instead of being a smartass it would be nice if you could actually help for once. Interesting! Among the things which you dont seem to know is the meaning of the word 'once'. Same applies for you too. Stop being smartasses. Please keep in mind that this is a community of volunteers. Nobody here is being paid for their time to help you fix your website, and if you manage to irritate us in the process, we're likely to just walk away from it. I looked over the code that you have provided us with, and based on that I could not see any reason why the html would be in the form of a bytes instead of a str. Since nobody else here seems to have any further insight into the problem either, you're just going to have to find a a way to debug the code. If you cannot do that on your own, then I suggest that you find a contractor who can, hire them, and grant them the access they need to do a real debugging session. I would also recommend that in the future you should stop deploying untested code to your production website. Set up a development environment for yourself, make the changes there, and only deploy when you know that everything is working. I agree with what you say except form the fact that i try to irritate people. Look at the thread and you will see who's irritating whom first. -- http://mail.python.org/mailman/listinfo/python-list
SimpleHTTPRequestHandler used with HTTP/1.1 hangs after the second resource on a page.
Hi! I'd like to bring your attention to the question titled Use HTTP/1.1 with SimpleHTTPRequestHandler at http://stackoverflow.com/q/15839718/95735 which reads; When I use HTTP/1.1 with SimpleHTTPRequestHandler, loading a page that pulls in other resources will hang after the second resource. and there's a tiny test showing the problem. It's hard to believe that SimpleHTTPServer doesn't handle such a simple task, does it? If I checked correctly code is stuck in handle_one_request() method at line 370 of server.py (http://hg.python.org/cpython/file/d9893d13c628/Lib/http/server.py#l370) but I can't see what's wrong. Any ideas? Best regards, Piotr Dobrogost -- http://mail.python.org/mailman/listinfo/python-list
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
On 04/12/2013 06:58 PM, Cousin Stanley wrote: someone wrote: As you can see, on my system I had to use: print row[0] , row[1] instead of: print row[ 'xtime' ] , row[ 'col4' ] I'm not sure exactly why The magic there is setting up the row_factory after the database connection dbc = DBM.connect( 'some.sql3' ) dbc.row_factory = DBM.Row Ah, thanks a lot - now it works! This is much more user-friendly... I don't really know what's the difference between sqlite3 and mysql... MySQL is used through a client/server system where the db server is always running and client processes submit requests to it in the form of sql statements SQLite is used as a stand-alone single process with no external server involved Ok, I see... So SQLite is very good for practicing... I'll remember that, thank you. Both speak sql but there are some differences mostly in data base connection strings and data type declarations Basic sql selection is select these fields from these files where these conditions are met And that part of sql doesn't vary much among different data base managers Great, thank you very much... Looks like everything is on track now... I just have to sit and play with it and make a good interface with matplotlib, but I think I should be able to come up with something nice, based on the help I god in this thread... Thanks again... I just love this python language - makes it possible to do so much, in so little time and without being an expert at all... -- http://mail.python.org/mailman/listinfo/python-list
RE: newbie question about confusing exception handling in urllib
Steven D'Aprano wrote: try: main() except Exception as err: log(err) print(Sorry, an unexpected error has occurred.) print(Please contact support for assistance.) sys.exit(-1) I like the traceback[0] module for logging last exception thrown. See traceback.format_exc() or traceback.print_exc(). trace = traceback.format_exc() log.error('I was trying to do action, but unexpected error.\n{0}'.format(trace)) [0] http://docs.python.org/2/library/traceback.html ~Ramit This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email. -- http://mail.python.org/mailman/listinfo/python-list
RE: extract HTML table in a structured format
Jabba Laci Hi, I wonder if there is a nice way to extract a whole HTML table and have the result in a nice structured format. What I want is to have the lifetime table at the bottom of this page: http://en.wikipedia.org/wiki/List_of_Ubuntu_releases (then figure out with a script until when my Ubuntu release is supported). I could do it with BeautifulSoup or lxml but is there a better way? There should be :) I know you already answered your question, but thought this might be helpful in the future. Wikipedia has an API for programmatic access. http://www.mediawiki.org/wiki/API ~Ramit This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email. -- http://mail.python.org/mailman/listinfo/python-list
RE: im.py: a python communications tool
Neil Cerutti wrote: On 2013-04-12, Mark Janssen dreamingforw...@gmail.com wrote: Possibily, but don't accept this view of the legal system. Judges can be quite reasonable. They don't want more time taken for bullshit cases and would much prefer for things to be settled (that is what their duty is -- to settle matters, not to make lawyers wealthy). Wishful thinking is the wrong way to approach any legal matter. He is not completely wishful (for USA). http://www.macrumors.com/2013/04/11/u-s-judge-expresses-frustration-at-apples-and-googles-use-of-litigation-as-business-strategy/ Of course, not sure if the frustration will actually lead to an action or is just idle talk. ~Ramit This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email. -- http://mail.python.org/mailman/listinfo/python-list
Re: SimpleHTTPRequestHandler used with HTTP/1.1 hangs after the second resource on a page.
On 4/12/2013 4:46 PM, Piotr Dobrogost wrote: Hi! I'd like to bring your attention to the question titled Use HTTP/1.1 with SimpleHTTPRequestHandler at http://stackoverflow.com/q/15839718/95735 which reads; When I use I find the doc slightly confusing. The SO code uses BaseHTTPServer. The doc says Usually, this module isn’t used directly, On the other hand, SimpleHTTPServer only defines a request handler and not a server itself. HTTP/1.1 with SimpleHTTPRequestHandler, loading a page that pulls in other resources will hang after the second resource. and there's a What does 'hang' mean? Does the page get displayed? If so, server.serve_forever is supposes to 'hang'. tiny test showing the problem. It's hard to believe that SimpleHTTPServer doesn't handle such a simple task, does it? If I checked correctly code is stuck in handle_one_request() method at line 370 of server.py (http://hg.python.org/cpython/file/d9893d13c628/Lib/http/server.py#l370) but I can't see what's wrong. Any ideas? The SO post says class MyRequestHandler(SimpleHTTPRequestHandler): #protocol_version = HTTP/1.0 # works protocol_version = HTTP/1.1 # hangs so this should be some sort of clue. The code says 569 # The version of the HTTP protocol we support. 570 # Set this to HTTP/1.1 to enable automatic keepalive 571 protocol_version = HTTP/1.0 The only substantive code I found using protocol_version (in the CPython default branch you linked to) is 300 if version_number = (1, 1) and self.protocol_version = HTTP/1.1: 301 self.close_connection = 0 331 elif (conntype.lower() == 'keep-alive' and 332 self.protocol_version = HTTP/1.1): 333 self.close_connection = 0 334 # Examine the headers and look for an Expect directive 335 expect = self.headers.get('Expect', ) 336 if (expect.lower() == 100-continue and 337 self.protocol_version = HTTP/1.1 and 338 self.request_version = HTTP/1.1): 339 if not self.handle_expect_100(): 340 return False I would re-test with the recently released 3.3.1 (and/or 2.7.4) to make sure nothing has changed -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
Keep the flattened data array others suggested, and then just split it like this: *(replace `example_data`, `_array`, and `columns`)* example_data = range(15) split_array = lambda _array, colums: \ . . .[_array[i:i + colums] for i in \ . . .xrange(0, len(_array), colums)] print split_array(example_data, 5) [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]] Gist https://gist.github.com/anonymous/f9064e4c8790ae037ec6 What do you guys think? On Fri, Apr 12, 2013 at 12:46 PM, Dave Angel da...@davea.name wrote: On 04/12/2013 01:29 PM, Ana Dionísio wrote: That only puts the data in one column, I wanted to separate it. For example: data in csv file: 1 2 3 4 5 7 8 9 10 11 a b c d e I wanted an array where I could pick an element in each position. In the case above if I did print array[0][3] it would pick 4 I know nothing about numpy. How about something like: import csv myreader = csv.reader() mylist = list(myreader) Presumably you can fill in the details. Anyway, I think this will give you a list of lists, and perhaps you can convert that to a numpy array, if you really need one of those. -- DaveA -- http://mail.python.org/**mailman/listinfo/python-listhttp://mail.python.org/mailman/listinfo/python-list -- Javier Miranda Mobile: +52 333 129 20 70 -- http://mail.python.org/mailman/listinfo/python-list
Re: CSV to matrix array
I have a CSV file with 20 rows and 12 columns and I need to store it as a matrix. If you can use pandas, the pandas.read_csv is what you want. -- http://mail.python.org/mailman/listinfo/python-list
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
someone wrote: So SQLite is very good for practicing Yes it is but it is also very good for much more than just practice Check the wikipedia info http://en.wikipedia.org/wiki/Sqlite It is arguably the most widely deployed database engine, as it is used today by several widespread browsers, operating systems, and embedded systems, among others The firefox browser keeps different sqlite database files for various uses If you use firefox check its default directory and you will see several files with .sqlite file type extensions Under debian debian linux ~/.mozilla/firefox/*.default Many programmers, including pythonistas, use sqlite for a convenient and persistent data store where data can be stashed now and used later in many different ways through the diversity of sql selections Thanks again You're welcome I just love this python language Me too :-) -- Stanley C. Kitching Human Being Phoenix, Arizona -- http://mail.python.org/mailman/listinfo/python-list
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
On 04/13/2013 01:26 AM, Cousin Stanley wrote: someone wrote: So SQLite is very good for practicing Yes it is but it is also very good for much more than just practice Check the wikipedia info http://en.wikipedia.org/wiki/Sqlite Very interesting... It is arguably the most widely deployed database engine, as it is used today by several widespread browsers, operating systems, and embedded systems, among others The firefox browser keeps different sqlite database files for various uses I should remember to use this in the future for my small apps... If you use firefox check its default directory and you will see several files with .sqlite file type extensions Under debian debian linux ~/.mozilla/firefox/*.default You're right: /home/myUser/.mozilla/firefox/pv079lxv.default/addons.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/chromeappsstore.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/content-prefs.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/cookies.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/downloads.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/extensions.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/formhistory.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/permissions.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/places.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/search.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/signons.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/urlclassifier3.sqlite /home/myUser/.mozilla/firefox/pv079lxv.default/webappsstore.sqlite Very interesting, I didn't knew that :-) Many programmers, including pythonistas, use sqlite for a convenient and persistent data store where data can be stashed now and used later in many different ways through the diversity of sql selections I'll try to do this in the future also... I just have to practice a bit more with the SQL commands, but now I can create, update, delete, query and I guess that's the most important things to know :-) Thanks for your help and for providing interesting background info :-) -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
On 11Apr2013 09:55, Nikos nagia.rets...@gmail.com wrote: | Τη Πέμπτη, 11 Απριλίου 2013 1:45:22 μ.μ. UTC+3, ο χρήστης Cameron Simpson έγραψε: | On 10Apr2013 21:50, nagia.rets...@gmail.com nagia.rets...@gmail.com wrote: | | the doctype is coming form the attempt of script metrites.py to open and read the 'index.html' file. | | But i don't know how to try to open it as a byte file instead of an tetxt file. Lele Gaifax showed one way: from codecs import open with open('index.html', encoding='utf-8') as f: content = f.read() But a plain open() should also do: with open('index.html') as f: content = f.read() if you're not taking tight control of the file encoding. The point here is to get _text_ (i.e. str) data from the file, not bytes. If the text turns out to be incorrectly decoded (i.e. incorrectly reading the file bytes and assembling them into text strings) because the default encoding is wrong, then you may need to read for Lele's more verbose open() example to select the correct encoding. But first ignore that and get text (str) instead of bytes. If you're already getting text from the file, something later is making bytes and handing it to print(). Another approach to try is to use sys.stdout.write() instead of print() The print() function will take _anything_ and write text of some form. The write() function will throw an exception if it gets the wrong type of data. If sys.stdout is opened in binary mode then write() will require bytes as data; strings will need to be explicitly turned into bytes via .encode() in order to not raise an exception. If sys.stdout is open in text mode, write() will require str data. The sys.stdout file itself will transcribe to bytes for you. If you take that route, at least you will not have confusion about str versus bytes. For an HTML output page I would advocate arranging that sys.stdout is in text mode; that way you can do the natural thing and .write() str data and lovely UTF-8 bytes will come out the other end. If the above test (using .write() instead of print()) shows it to be in binary mode we can fix that. But you need to find out. You will want access to the error messages from the CGI environment; do you have access to the web servers error_log? You can tail that in a terminal while you reload the page to see what's going on. | This works in the shell, but doesn't work on my website: | | $ cat utf8.txt | υλικό!Πρόκειται γ Ok, so your terminal is using UTF-8 as its output coding. (And so is your mail posting program, since we see it unmangled on my screen here.) | $ python3 | Python 3.2.3 (default, Oct 19 2012, 20:10:41) | [GCC 4.6.3] on linux2 | Type help, copyright, credits or license for more information. | data = open('utf8.txt').read() | print(data) | υλικό!Πρόκειται γ Likewise. However, in an exciting twist, I seem to recall that Python invoked interactively with aterminal as output will have the default terminal encoding in place on sys.stdout. Producing what you expect. _However_, python invoked in a batch environment where stdout is not a terminal (such as in the CGI environment producing your web page), that is _not_ necessarily the case. | print(data.encode('utf-8')) | b'\xcf\x85\xce\xbb\xce\xb9\xce\xba\xcf\x8c!\xce\xa0\xcf\x81\xcf\x8c\xce\xba\xce\xb5\xce\xb9\xcf\x84\xce\xb1\xce\xb9 \xce\xb3\n' | | See, the last line is what i'am getting on my website. The above line takes your Unicode text in data and transcribed it to bytes using UTF-8 as the encoding. And print() is then receiving that bytes object and printing its str() representation as b''. That str is itself unicode, and when print passes it to sys.stdout, _that_ transcribed the unicode b'...' string as bytes to your terminal. Using UTF-8 based on the previous examples above, but since all those characters are in the bottom 127 code range the byte sequence will be the same if it uses ASCII or ISO8859-1 or almost anything else:-) As you can see, there's a lot of encoding/decoding going on behind the scenes even in this superficially simple example. | If i remove | the encode('utf-8') part in metrites.py, the webpage will not show | anything at all... Ah, but data will be being output. The print() function _will_ be writing data out in some form. I suggest you remove the .encode() and then examine the _source_ text of the web page, not its visible form. So: remove .encode(), reload the web page, view page source (depends on your browser, it is ctrl-U in Firefox ((Cmd-U in firefox on a Mac))). I think a lot of the issue you have in this thread is that your page is too complex. Make another page to do the same thing, and start with nothing. Add stuff to it a single item at a time until the page behaves incorrectly. Then you will know the exact item of code that introduced the issue. And then that single item can be examined in detail for the decode/encode issues. The other issue in the thread is that people losing
Re: python-noob - which container is appropriate for later exporting into mySql + matplotlib ?
On Fri, 12 Apr 2013 23:26:05 +, Cousin Stanley wrote: The firefox browser keeps different sqlite database files for various uses Yes, and I *really* wish they wouldn't. It's my number 1 cause of major problems with Firefox. E.g. http://kb.mozillazine.org/Bookmarks_history_and_toolbar_buttons_not_working_-_Firefox Using a database for such lightweight data as bookmarks is, in my opinion, gross overkill and adds to the complexity of Firefox. More complexity leads to more bugs, e.g.: https://bugzilla.mozilla.org/show_bug.cgi?id=465684#c11 https://bugzilla.mozilla.org/show_bug.cgi?id=431558 Please don't use a full-featured database if you don't need the overhead of ACID compliance. And if you do, well, Sqlite is not fully ACID compliant. -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On Fri, 12 Apr 2013 00:06:21 +, Steven D'Aprano wrote: The close method is defined and flushing and closing a file, so it should not return until that's done. But note that done in this case means the file system thinks it is done, not *actually* done. Hard drives, especially the cheaper ones, lie. They can say the file is written when in fact the data is still in the hard drive's internal cache and not written to the disk platter. Also, in my experience, hardware RAID controllers will eat your data, and then your brains when you try to diagnose the problem. None of which is likely to be relevant here, as any subsequent access to the file will reference the in-memory copy; the disk will only get involved if the data has already been flushed from the OS' cache and has to be read back in from disk. write(), close(), etc return once the data has been written to the OS' disk cache. At that point, the OS usually won't have even started sending the data to the drive, let alone waited for the drive to report (or claim) that the data has been written to the physical disk. If you want to wait for the data written to be written to the physical disk (in order to obtain specific behaviour with respect to an unclean shutdown), use f.flush() followed by os.fsync(f.fileno()). But most of the time, there's no point. If you actually care about what happens in the event of an unclean shutdown, you typically also need to sync the directory, otherwise the file's contents will get sync'd but the file's very existence might not be. -- http://mail.python.org/mailman/listinfo/python-list
Re: shutil.copyfile is incomplete (truncated)
On Sat, Apr 13, 2013 at 12:33 PM, Nobody nob...@nowhere.com wrote: But most of the time, there's no point. If you actually care about what happens in the event of an unclean shutdown, you typically also need to sync the directory, otherwise the file's contents will get sync'd but the file's very existence might not be. Or just store your content in a PostgreSQL database, and let it worry about all the platform-specific details of how to fsync reliably. ChrisA -- http://mail.python.org/mailman/listinfo/python-list
[OT] Lying hard drives [was Re: shutil.copyfile is incomplete (truncated)]
On Sat, 13 Apr 2013 03:33:29 +0100, Nobody wrote: On Fri, 12 Apr 2013 00:06:21 +, Steven D'Aprano wrote: The close method is defined and flushing and closing a file, so it should not return until that's done. But note that done in this case means the file system thinks it is done, not *actually* done. Hard drives, especially the cheaper ones, lie. They can say the file is written when in fact the data is still in the hard drive's internal cache and not written to the disk platter. Also, in my experience, hardware RAID controllers will eat your data, and then your brains when you try to diagnose the problem. None of which is likely to be relevant here, Since we've actually identified the bug (the OP was using file.close without actually calling it), that's certainly the case :-) [...] If you want to wait for the data written to be written to the physical disk (in order to obtain specific behaviour with respect to an unclean shutdown), use f.flush() followed by os.fsync(f.fileno()). If only it were that simple. It has been documented that some disks will lie, even when told to sync. When I say some, I mean *most*. There's probably nothing you can do about it, apart from not using that model or brand of disk, so you have to just live with the risk. http://queue.acm.org/detail.cfm?id=2367378 USB sticks are especially nasty. I've got quite a few USB thumb drives where the write light keeps flickering for anything up to five minutes after the OS reports that the drive has been unmounted and is safe to unplug. I corrupted the data on these quite a few times until I noticed the light. And let's not even mention the drives that have no light at all... But my favourite example of lying hard drives of all time is this: http://blog.jitbit.com/2011/04/chinese-magic-drive.html I want one of those! -- Steven -- http://mail.python.org/mailman/listinfo/python-list
Re: [OT] Lying hard drives [was Re: shutil.copyfile is incomplete (truncated)]
On Sat, Apr 13, 2013 at 1:17 PM, Steven D'Aprano steve+comp.lang.pyt...@pearwood.info wrote: On Sat, 13 Apr 2013 03:33:29 +0100, Nobody wrote: If you want to wait for the data written to be written to the physical disk (in order to obtain specific behaviour with respect to an unclean shutdown), use f.flush() followed by os.fsync(f.fileno()). If only it were that simple. It has been documented that some disks will lie, even when told to sync. When I say some, I mean *most*. There's probably nothing you can do about it, apart from not using that model or brand of disk, so you have to just live with the risk. It's often close to that simple. With most hard disks, you can make them 100% reliable, but you may have to check some disk parameters (on Linux, that's just a matter of writing to something in /proc somewhere, don't remember the details but it's easy to check). The worst offenders I've met are SSDs... USB sticks are especially nasty. I've got quite a few USB thumb drives where the write light keeps flickering for anything up to five minutes after the OS reports that the drive has been unmounted and is safe to unplug. I corrupted the data on these quite a few times until I noticed the light. And let's not even mention the drives that have no light at all... ... but you've met worse. But my favourite example of lying hard drives of all time is this: http://blog.jitbit.com/2011/04/chinese-magic-drive.html I want one of those! Awesome! It's the new version of DoubleSpace / DriveSpace! http://en.wikipedia.org/wiki/DriveSpace (And its problems, according to that Wikipedia article, actually had the same root cause - write caching that the user wasn't aware of. Great.) ChrisA -- http://mail.python.org/mailman/listinfo/python-list
Re: Unicode issue with Python v3.3
Τη Σάββατο, 13 Απριλίου 2013 4:41:57 π.μ. UTC+3, ο χρήστης Cameron Simpson έγραψε: On 11Apr2013 09:55, Nikos nagia.rets...@gmail.com wrote: | Τη Πέμπτη, 11 Απριλίου 2013 1:45:22 μ.μ. UTC+3, ο χρήστης Cameron Simpson έγραψε: | On 10Apr2013 21:50, nagia.rets...@gmail.com nagia.rets...@gmail.com wrote: | | the doctype is coming form the attempt of script metrites.py to open and read the 'index.html' file. | | But i don't know how to try to open it as a byte file instead of an tetxt file. Lele Gaifax showed one way: from codecs import open with open('index.html', encoding='utf-8') as f: content = f.read() But a plain open() should also do: with open('index.html') as f: content = f.read() if you're not taking tight control of the file encoding. The point here is to get _text_ (i.e. str) data from the file, not bytes. If the text turns out to be incorrectly decoded (i.e. incorrectly reading the file bytes and assembling them into text strings) because the default encoding is wrong, then you may need to read for Lele's more verbose open() example to select the correct encoding. But first ignore that and get text (str) instead of bytes. If you're already getting text from the file, something later is making bytes and handing it to print(). Another approach to try is to use sys.stdout.write() instead of print() The print() function will take _anything_ and write text of some form. The write() function will throw an exception if it gets the wrong type of data. If sys.stdout is opened in binary mode then write() will require bytes as data; strings will need to be explicitly turned into bytes via .encode() in order to not raise an exception. If sys.stdout is open in text mode, write() will require str data. The sys.stdout file itself will transcribe to bytes for you. If you take that route, at least you will not have confusion about str versus bytes. For an HTML output page I would advocate arranging that sys.stdout is in text mode; that way you can do the natural thing and .write() str data and lovely UTF-8 bytes will come out the other end. If the above test (using .write() instead of print()) shows it to be in binary mode we can fix that. But you need to find out. You will want access to the error messages from the CGI environment; do you have access to the web servers error_log? You can tail that in a terminal while you reload the page to see what's going on. | This works in the shell, but doesn't work on my website: | | $ cat utf8.txt | υλικό!Πρόκειται γ Ok, so your terminal is using UTF-8 as its output coding. (And so is your mail posting program, since we see it unmangled on my screen here.) | $ python3 | Python 3.2.3 (default, Oct 19 2012, 20:10:41) | [GCC 4.6.3] on linux2 | Type help, copyright, credits or license for more information. | data = open('utf8.txt').read() | print(data) | υλικό!Πρόκειται γ Likewise. However, in an exciting twist, I seem to recall that Python invoked interactively with aterminal as output will have the default terminal encoding in place on sys.stdout. Producing what you expect. _However_, python invoked in a batch environment where stdout is not a terminal (such as in the CGI environment producing your web page), that is _not_ necessarily the case. | print(data.encode('utf-8')) | b'\xcf\x85\xce\xbb\xce\xb9\xce\xba\xcf\x8c!\xce\xa0\xcf\x81\xcf\x8c\xce\xba\xce\xb5\xce\xb9\xcf\x84\xce\xb1\xce\xb9 \xce\xb3\n' | | See, the last line is what i'am getting on my website. The above line takes your Unicode text in data and transcribed it to bytes using UTF-8 as the encoding. And print() is then receiving that bytes object and printing its str() representation as b''. That str is itself unicode, and when print passes it to sys.stdout, _that_ transcribed the unicode b'...' string as bytes to your terminal. Using UTF-8 based on the previous examples above, but since all those characters are in the bottom 127 code range the byte sequence will be the same if it uses ASCII or ISO8859-1 or almost anything else:-) As you can see, there's a lot of encoding/decoding going on behind the scenes even in this superficially simple example. | If i remove | the encode('utf-8') part in metrites.py, the webpage will not show | anything at all... Ah, but data will be being output. The print() function _will_ be writing data out in some form. I suggest you remove the .encode() and then examine the _source_ text of the web page, not its visible form. So: remove .encode(), reload the web page, view page source (depends on your browser, it is ctrl-U in Firefox ((Cmd-U in firefox on a Mac))).
Re: Functional vs. Object oriented API
David M Chess於 2013年4月12日星期五UTC+8下午11時37分28秒寫道: Roy Smith r...@panix.com As part of our initial interview screen, we give applicants some small coding problems to do. One of the things we see a lot is what you could call Java code smell. This is our clue that the person is really a Java hacker at heart who just dabbles in Python but isn't really fluent. ... It's not just LongVerboseFunctionNamesInCamelCase(). Nor is it code that looks like somebody bought the Gang of Four patterns book and is that maybe there's a class struggling to be written. And I think equally to the point, even if you have only data, or only functions, right now, if the thing in question has that thing-like feel to it :) you will probably find yourself with both before you're done, so you might as well make it a class now... DC If it is not time-critical and no needs to convert into CYTHON then it does not matter too much. But a well wrapped class structures with good documents can help others to use the python codes a lot. If the part is intended to be time-critical in the low level part, then avoiding seeking 4 levels of methods and properties inside a loop is helpful in python programs to be executed in the run time. -- http://mail.python.org/mailman/listinfo/python-list
[issue4630] IDLE: add cursor noblink option
Roger Serwy added the comment: Attached is an updated version of the patch against the latest 2.7 code. -- nosy: +roger.serwy Added file: http://bugs.python.org/file29787/issue4630_refreshed.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue4630 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17702] os.environ converts key type from string to bytes in KeyError exception
R. David Murray added the comment: Well, it is not that it is converting it in the exception, it is that it is converting it in order to do the lookup. It is an interesting question whether or not its value in the exception should be considered a bug. -- nosy: +r.david.murray ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17702 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue13405] Add DTrace probes
Changes by Tadas Barzdžius ret...@gmail.com: -- nosy: +Tadas.Barzdžius ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue13405 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17702] os.environ converts key type from string to bytes in KeyError exception
STINNER Victor added the comment: It is an interesting question whether or not its value in the exception should be considered a bug. I consider it as a bug because it is very surprising to have a different key on the error. Attached patch fixes the issue. -- keywords: +patch versions: +Python 3.4 Added file: http://bugs.python.org/file29788/os_environ_keyerror.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17702 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue12181] SIGBUS error on OpenBSD (sparc64)
Federico Schwindt added the comment: Here's a slightly modified version of the patch that should work with python 2 and 3. -- Added file: http://bugs.python.org/file29789/openbsd-kqueue-001.patch ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue12181 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue1298835] Add a vendor-packages directory for system-supplied modules
Bohuslav Slavek Kabrda added the comment: I'm strongly +1 on this one. I package Python RPMs for Fedora and I know what mess can come out of installing through both RPM and easy_install/pip. In Fedora, both Perl and Ruby use vendor specific dirs for installing RPM packaged modules and site specific dirs for installation via cpan/rubygems. Since I'm also Ruby maintainer, I was able to watch how the confusion of Ruby developers disappeared after we introduced this approach in Fedora 17 (and rubygems stopped uninstalling RPM gems, which was always causing unsatisfied dependency problems). So I think Python should also go this way and provide a configuration option to use vendor-packages. Please note, that Debian packagers have been patching their Python package downstream for quite some time, introducing dist-packages into their installation. I think that they didn't experience any significant problems so far, which pretty much proves that this is feasible (and also their patches could probably serve as a base for patch for cPython). -- nosy: +bkabrda ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue1298835 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue900112] cgi.fieldStorage doesn't grok standards env. variables
Andrew Svetlov added the comment: Agree with Sentil -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue900112 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16853] add a Selector to the select module
Charles-François Natali added the comment: If this goes inside the select module, it could probably help issue #17552 (add socket.sendfile()) a bit. Yes, that's exactly the idea. See also the attached patches for telnetlib and multiprocessing (there would probably be other candidates like subprocess, etc). I guess we can merge this when tulip goes in. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue16853 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17692] Fix test discovery for test_sqlite.py
Roundup Robot added the comment: New changeset 71c4234eb39f by Ezio Melotti in branch '3.3': #17692: test_sqlite now works with unittest test discovery. Patch by Zachary Ware. http://hg.python.org/cpython/rev/71c4234eb39f New changeset 4c73d4785829 by Ezio Melotti in branch 'default': #17692: merge with 3.3. http://hg.python.org/cpython/rev/4c73d4785829 -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17692 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17692] Fix test discovery for test_sqlite.py
Ezio Melotti added the comment: Fixed, thanks for the patch! -- assignee: - ezio.melotti resolution: - fixed stage: - committed/rejected status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17692 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17702] os.environ converts key type from string to bytes in KeyError exception
R. David Murray added the comment: Sounds fine to me. Is there a reason you are not using 'with assertRaises' in the test? -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17702 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17688] Wrong signature for richcmpfunc in documentation
Roundup Robot added the comment: New changeset a263d40d1724 by Andrew Svetlov in branch '3.3': #17688: fix declaration for richcmp example in the docs. http://hg.python.org/cpython/rev/a263d40d1724 New changeset 4c996682d086 by Andrew Svetlov in branch 'default': #17688: fix declaration for richcmp example in the docs. http://hg.python.org/cpython/rev/4c996682d086 -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17688 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17688] Wrong signature for richcmpfunc in documentation
Andrew Svetlov added the comment: Fixed. Thanks. -- nosy: +asvetlov resolution: - fixed stage: - committed/rejected status: open - closed versions: +Python 3.4 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17688 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue6696] Profile objects should be documented
Roundup Robot added the comment: New changeset cd785c9d26c2 by Ezio Melotti in branch '3.3': #6696: add documentation for the Profile objects, and improve profile/cProfile docs. Patch by Tom Pinckney. http://hg.python.org/cpython/rev/cd785c9d26c2 New changeset 81dabc1feb52 by Ezio Melotti in branch 'default': #6696: merge with 3.3. http://hg.python.org/cpython/rev/81dabc1feb52 New changeset b57245574717 by Ezio Melotti in branch '2.7': #6696: add documentation for the Profile objects, and improve profile/cProfile docs. Patch by Tom Pinckney. http://hg.python.org/cpython/rev/b57245574717 -- nosy: +python-dev ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue6696 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue6696] Profile objects should be documented
Ezio Melotti added the comment: Fixed, thanks for the patch! -- assignee: eric.araujo - ezio.melotti resolution: - fixed stage: commit review - committed/rejected status: open - closed type: behavior - enhancement ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue6696 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue6696] Profile objects should be documented
Andrew Svetlov added the comment: Cool! Thanks. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue6696 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17702] os.environ converts key type from string to bytes in KeyError exception
STINNER Victor added the comment: Is there a reason you are not using 'with assertRaises' in the test? The test is not testing the exception class, but the first argument of the exception. How do you test that using assertRaises()? Especially to check err.args[0] is missing. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17702 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17703] Trash can mechanism segfault during interpreter finalization in Python 2.7.4
New submission from Marc-Andre Lemburg: A user reported a segfault when using our mxURL extension with Python 2.7.4. Previous Python versions do not show this behavior, so it's new in Python 2.7.4. The extension uses an Py_AtExit() function to clean up among other things a reference to a dictionary from another module. The dictionary deallocation then causes the segfault: $ gdb /usr/local/bin/python2.7 GNU gdb (GDB) 7.0.1-debian Copyright (C) 2009 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type show copying and show warranty for details. This GDB was configured as i486-linux-gnu. For bug reporting instructions, please see: http://www.gnu.org/software/gdb/bugs/... Reading symbols from /usr/local/bin/python2.7...done. (gdb) r Starting program: /usr/local/bin/python2.7 [Thread debugging using libthread_db enabled] Python 2.7.4 (default, Apr 8 2013, 15:51:19) [GCC 4.4.5] on linux2 Type help, copyright, credits or license for more information. import mx.URL import sys sys.exit() Program received signal SIGSEGV, Segmentation fault. 0x08091201 in dict_dealloc (mp=0xb7b2813c) at Objects/dictobject.c:1005 1005Py_TRASHCAN_SAFE_BEGIN(mp) (gdb) bt #0 0x08091201 in dict_dealloc (mp=0xb7b2813c) at Objects/dictobject.c:1005 #1 0xb7875928 in mxURLModule_Cleanup () at mx/URL/mxURL/mxURL.c:2789 #2 0x0810553f in call_ll_exitfuncs () at Python/pythonrun.c:1763 #3 Py_Finalize () at Python/pythonrun.c:554 #4 0x08104bac in Py_Exit () at Python/pythonrun.c:1772 #5 handle_system_exit () at Python/pythonrun.c:1146 #6 0x0810517d in PyErr_PrintEx (set_sys_last_vars=value optimized out) at Python/pythonrun.c:1156 #7 0x081058dd in PyRun_InteractiveOneFlags (fp=0xb7f8b420, filename=0x815f9c0 stdin, flags=0xbc4c) at Python/pythonrun.c:855 #8 0x08105a68 in PyRun_InteractiveLoopFlags (fp=0xb7f8b420, filename=0x815f9c0 stdin, flags=0xbc4c) at Python/pythonrun.c:772 #9 0x081062f2 in PyRun_AnyFileExFlags (fp=0xb7f8b420, filename=0x815f9c0 stdin, closeit=0, flags=0xbc4c) at Python/pythonrun.c:741 #10 0x0805bb59 in Py_Main (argc=1, argv=0xbd34) at Modules/main.c:640 #11 0x0805abeb in main (argc=1, argv=0xbd34) at ./Modules/python.c:23 (gdb) -- assignee: pitrou components: Interpreter Core messages: 186627 nosy: lemburg, pitrou priority: normal severity: normal status: open title: Trash can mechanism segfault during interpreter finalization in Python 2.7.4 versions: Python 2.7 ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17703 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17703] Trash can mechanism segfault during interpreter finalization in Python 2.7.4
Marc-Andre Lemburg added the comment: After a closer look at recent checkins, I found this checking for the trash can mechanism: 5a2ef447b80d (ticket #13992). This appears to be the cause: 1.20 #define Py_TRASHCAN_SAFE_BEGIN(op) \ 1.21 -if (_PyTrash_delete_nesting PyTrash_UNWIND_LEVEL) { \ 1.22 -++_PyTrash_delete_nesting; 1.23 -/* The body of the deallocator is here. */ 1.24 +do { \ 1.25 +PyThreadState *_tstate = PyThreadState_GET(); \ 1.26 +if (_tstate-trash_delete_nesting PyTrash_UNWIND_LEVEL) { \ 1.27 +++_tstate-trash_delete_nesting; 1.28 +/* The body of the deallocator is here. */ At the time the Py_AtExit functions are called, the thread state is NULL, so the if (_tstate-...) segfaults. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17703 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17703] Trash can mechanism segfault during interpreter finalization in Python 2.7.4
Marc-Andre Lemburg added the comment: I think a solution to the problem would be to check _tstate for NULL and only use it if it is non-NULL - without threads you don't need to keep track of them ;-) -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17703 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17703] Trash can mechanism segfault during interpreter finalization in Python 2.7.4
Amaury Forgeot d'Arc added the comment: At the time the Py_AtExit functions are called, the thread state is NULL I'd say this is the root cause. It's a bad thing to call Py_DECREF without a thread state. Was it the case in previous versions? -- nosy: +amaury.forgeotdarc ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17703 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16658] Missing return in HTTPConnection.send()
Senthil Kumaran added the comment: Andrew - Please go ahead with commit. I reviewed the patch and it looks good to me as well. It is a bug so it should be backported. Thanks for the patch and a good test, Jeff Knupp. Agree with your reasoning / lack of documentation on send behavior w.r.t to encoding, Please open a new ticket for that. -- assignee: - asvetlov ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue16658 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue900112] cgi.fieldStorage doesn't grok standards env. variables
Senthil Kumaran added the comment: I am closing this as an Invalid issue. Please bring to discussion at python-dev if someone disagrees. Thank you! -- resolution: - invalid status: open - closed ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue900112 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17673] add `copy_from` argument to temporaryfile
Kyle Roberts added the comment: I'm working on a patch for this. -- nosy: +kyle.roberts ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17673 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17702] os.environ converts key type from string to bytes in KeyError exception
R. David Murray added the comment: with self.assertRaises(KeyError) as cm: os.environ[missing] self.assertEqual(cm.excecption.args[0], missing) (I don't know why assertRaises returns itself rather than just returning the exception in the with, but that's the API). -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17702 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17700] Update Curses HOWTO for 3.4
A.M. Kuchling added the comment: Updated version of the patch: * Correct the errors reported in the review. * Restore 3-space indents. * Mention the LINES and COLS variables. * Add more links to the final section. I believe everything in the howto also applies to 3.3; it would be fine if you want to apply it to the 3.3 branch as well. -- Added file: http://bugs.python.org/file29790/update-curses-howto.txt ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17700 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17703] Trash can mechanism segfault during interpreter finalization in Python 2.7.4
Marc-Andre Lemburg added the comment: On 12.04.2013 16:00, Amaury Forgeot d'Arc wrote: Amaury Forgeot d'Arc added the comment: At the time the Py_AtExit functions are called, the thread state is NULL I'd say this is the root cause. It's a bad thing to call Py_DECREF without a thread state. Was it the case in previous versions? The extension has been using this ever since it was written many years ago and without any problems in all Python versions up, but not including 2.7.4. It's the only way to do module cleanup in Python 2.x. So far, we've only seen the problem for dictionaries that are DECREFed. I know that things may go wrong when DECREF'ing objects this late in the finalization process, but still expect Python to handle errors gracefully without segfaulting, as it has been the case for all previous Python versions. -- ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17703 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue17697] Incorrect stacktrace from pdb
Xavier de Gaye added the comment: The call to set_trace() installs a local trace function on all the frames of the stack, including on the oldest frame, i.e. the module level frame. This causes the invocation of frame_settrace() in frameobject.c and the module frame f_lineno is evaluated by PyCode_Addr2Line() (this happens only on the first call to set_trace() since the module frame local trace is never removed). Next, the 'continue' command sets the global trace function to None and removes the local trace function of all the frames of the stack, *except* the module frame (see set_continue() in bdb.py). On printing the stack with the 'where' command, the bdb get_stack() function invokes frame_getlineno() that calls PyFrame_GetLineNumber() that assumes that the module frame f_lineno is correct since it has a local trace function. But as the global trace function has been set to None by the 'continue' command, f_lineno is not updated by the interpreter tracing code when running the module level frame. Hence the problem. The root cause is that PyFrame_GetLineNumber assumes incorrectly that when a frame has a local trace function, its f_lineno is correct. Issue 7238 and issue 17277 are also related to this issue. -- nosy: +xdegaye ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue17697 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
[issue16309] PYTHONPATH= different from no PYTHONPATH at all
R. David Murray added the comment: It may be problematic, but it is also consistent with the way the shell works in general. (Try the same things with PATH.) -- nosy: +r.david.murray ___ Python tracker rep...@bugs.python.org http://bugs.python.org/issue16309 ___ ___ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com