Friday, April 16, 2010

comp.lang.python - 25 new messages in 11 topics - digest

comp.lang.python
http://groups.google.com/group/comp.lang.python?hl=en

comp.lang.python@googlegroups.com

Today's topics:

* Merge two directories together - 1 messages, 1 author
http://groups.google.com/group/comp.lang.python/t/f0ca461448450a6d?hl=en
* Reactive programming in Python ? - 3 messages, 3 authors
http://groups.google.com/group/comp.lang.python/t/4b8b621985163c1a?hl=en
* Download Visual Studio Express 2008 now - 2 messages, 1 author
http://groups.google.com/group/comp.lang.python/t/65e34924e7d42c90?hl=en
* Incorrect scope of list comprehension variables - 5 messages, 5 authors
http://groups.google.com/group/comp.lang.python/t/2b64b9a9069a324f?hl=en
* Can anyone reproduce this crash? - 1 messages, 1 author
http://groups.google.com/group/comp.lang.python/t/d9ae972a6dc8e80d?hl=en
* distutils examples? - 2 messages, 2 authors
http://groups.google.com/group/comp.lang.python/t/976f0b913e6b2729?hl=en
* question about list extension - 2 messages, 2 authors
http://groups.google.com/group/comp.lang.python/t/7d837e4cf084d84f?hl=en
* getting a string as the return value from a system command - 4 messages, 3
authors
http://groups.google.com/group/comp.lang.python/t/4d8ee1476d14f4be?hl=en
* SEC apparently about to mandate Python for a particular financial use - 3
messages, 3 authors
http://groups.google.com/group/comp.lang.python/t/12f4638631ad0be7?hl=en
* What license/copyright text to include and where to include it when selling
a commercial Python based application? - 1 messages, 1 author
http://groups.google.com/group/comp.lang.python/t/cdbf16fe25009065?hl=en
* feature request for a wget -r like implementation in python3 - 1 messages, 1
author
http://groups.google.com/group/comp.lang.python/t/1a77c5634c929619?hl=en

==============================================================================
TOPIC: Merge two directories together
http://groups.google.com/group/comp.lang.python/t/f0ca461448450a6d?hl=en
==============================================================================

== 1 of 1 ==
Date: Fri, Apr 16 2010 11:16 am
From: "Dave W."


> While Python provides some helpful methods for moving files and
> directories around (shutil.move, shutil.copytree, etc), none of
> them seem to be able to merge two directories.
-snip-
> Any ideas?

It's not pretty, but you could hack up the original copytree()
source so it ignores errors from the makedirs() call. Then it
should work more-or-less like 'cp -r'. This isn't ideal, because
'OSError' is thrown, which could mean that the dir already exists
(okay), or it could be a 'real' error, like the current user doesn't
have permission to write to the destination. (See 'XXX' in the code
below.)

Better would be to match on the error string and only ignore the
'directory exists' error. Unfortunately, the error messages do
vary per-platform. Here's what I see under Windows when the
directory already exists:

WindowsError: [Error 183] Cannot create a file when that file
already exists: 'test2'

and under CentOS:

OSError: [Errno 17] File exists: 'test2'

The code below seems to work under both Linux and Windows; but I
didn't really test it much, so handle with care. :-}

----------

def copytree(src, dst, symlinks=False, ignore=None):
import os
from shutil import copy2, copystat, Error

names = os.listdir(src)
if ignore is not None:
ignored_names = ignore(src, names)
else:
ignored_names = set()

try:
os.makedirs(dst)
except OSError, exc:
# XXX - this is pretty ugly
if "file already exists" in exc[1]: # Windows
pass
elif "File exists" in exc[1]: # Linux
pass
else:
raise

errors = []
for name in names:
if name in ignored_names:
continue
srcname = os.path.join(src, name)
dstname = os.path.join(dst, name)
try:
if symlinks and os.path.islink(srcname):
linkto = os.readlink(srcname)
os.symlink(linkto, dstname)
elif os.path.isdir(srcname):
copytree(srcname, dstname, symlinks, ignore)
else:
copy2(srcname, dstname)
# XXX What about devices, sockets etc.?
except (IOError, os.error), why:
errors.append((srcname, dstname, str(why)))
# catch the Error from the recursive copytree so that we can
# continue with other files
except Error, err:
errors.extend(err.args[0])
try:
copystat(src, dst)
except WindowsError:
# can't copy file access times on Windows
pass
except OSError, why:
errors.extend((src, dst, str(why)))
if errors:
raise Error, errors

==============================================================================
TOPIC: Reactive programming in Python ?
http://groups.google.com/group/comp.lang.python/t/4b8b621985163c1a?hl=en
==============================================================================

== 1 of 3 ==
Date: Fri, Apr 16 2010 11:28 am
From: Stefan Behnel


pca, 16.04.2010 17:18:
> In fact, I have seeded an open-source project, Yoopf, that enables
> programming by formula within Python, with the goal of dramatically
> accelerating the development of the model view in the MVC model.

Looks like the example on the main page would work better with the "any"
builtin than with the "sum" builtin.

Stefan

== 2 of 3 ==
Date: Fri, Apr 16 2010 1:02 pm
From: pca


On Apr 16, 8:28 pm, Stefan Behnel <stefan...@behnel.de> wrote:
> pca, 16.04.2010 17:18:
>
> > In fact, I have seeded an open-source project, Yoopf, that enables
> > programming by formula within Python, with the goal of dramatically
> > accelerating the development of the model view in the MVC model.
>
> Looks like the example on the main page would work better with the "any"
> builtin than with the "sum" builtin.
>
> Stefan

Stefan,

I'm not sure what you mean. The example formula in the main page of
http://www.yoopf.org calculates the total amount of an order as the
sum of the amount of each order line: why the 'any' ?

By the way, Mike is right. The URL should be http://www.yoopf.org
(not http://www.google.com/www.yoopf.org) Sorry for that.

Pierre C.


== 3 of 3 ==
Date: Fri, Apr 16 2010 1:03 pm
From: Stefaan Himpe

> You can find more information on this project at www.yoopf.org. Your
> comments are more than welcome!

Is this something similar to trellis?
http://pypi.python.org/pypi/Trellis


==============================================================================
TOPIC: Download Visual Studio Express 2008 now
http://groups.google.com/group/comp.lang.python/t/65e34924e7d42c90?hl=en
==============================================================================

== 1 of 2 ==
Date: Fri, Apr 16 2010 11:47 am
From: "Martin v. Löwis"


Brian Blais wrote:
> On Apr 12, 2010, at 16:36 , Martin v. Loewis wrote:
>
>> If you are planning to build Python extension modules in the next five
>> years, I recommend that you obtain a copy of VS Express
>
> Am I missing something here? I have heard this before, but I have built
> extension modules many times under windows (using Cython) and never once
> used a MS product.

It's fine if your package supports being compiled with Mingw32. A lot of
source code can't be compiled this way, either because gcc doesn't
support some of the MS extensions (in particular wrt. COM), or because
Mingw32 doesn't provide the header files (in particular wrt. C++), or
because linking with a library is necessary that uses the MSVC mangling,
not the g++ one (again, for C++).

Code written in Cython should work fine with gcc indeed.

> It seems to
> work fine. What is the basis of this claim that you need MS Visual
> Studio to do it?

Just try building Mark Hammond's Win32 extensions or PythonWin with
Mingw32 to see for yourself.

Regards,
Martin

== 2 of 2 ==
Date: Fri, Apr 16 2010 3:38 pm
From: "Martin v. Loewis"


>> Python 2.6, 2.7, and 3.1 are all built with that release (i.e. 2008).
>> Because of another long tradition, Python extension modules must be
>> built with the same compiler version (more specifically, CRT version) as
>> Python itself. So to build extension modules for any of these releases,
>> you need to have a copy of VS 2008 or VS 2008 Express.
>
> Is it too late for Python 2.7 to update to using Visual Studio 2010?

Most definitely. They have switched *again* the way they distribute the
CRT, so major changes to packaging and distutils would be required.

> It is going to be much easier for people to find and install the current
> version of VS than the previous. There is still more than 2 months left
> before 2.7 is planned to be released.

It took us about two years to accommodate the CRT change. This time, it
will be easier, but nowhere near 2 months. I'm skeptical that the switch
to VS 2010 will be ready for 3.2.

Regards,
Martin

==============================================================================
TOPIC: Incorrect scope of list comprehension variables
http://groups.google.com/group/comp.lang.python/t/2b64b9a9069a324f?hl=en
==============================================================================

== 1 of 5 ==
Date: Fri, Apr 16 2010 12:03 pm
From: Raymond Hettinger


On Apr 3, 3:30 am, Alain Ketterlin <al...@dpt-info.u-strasbg.fr>
wrote:
> Hi all,
>
> I've just spent a few hours debugging code similar to this:
>
> d = dict()
> for r in [1,2,3]:
>     d[r] = [r for r in [4,5,6]]
> print d
>
> THe problem is that the "r" in d[r] somehow captures the value of the
> "r" in the list comprehension, and somehow kills the loop interator. The
> (unexpected) result is {6: [4, 5, 6]}. Changing r to s inside the list
> leads to the correct (imo) result.
>
> Is this expected? Is this a known problem? Is it solved in newer
> versions?

It is the intended behavior in 2.x. The theory was that a list
comprehension would have the same effect as if it had been unrolled
into a regular for-loop.

In 3.x, Guido changed his mind and the induction variable is hidden.
The theory is that some folks (like you) expect the variable to be
private and that is what we already do with generator expressions.

There's no RightAnswer(tm), just our best guess as to what is the most
useful behavior for the most number of people.

Raymond


== 2 of 5 ==
Date: Fri, Apr 16 2010 5:20 pm
From: Steven D'Aprano


On Fri, 16 Apr 2010 08:48:03 -0700, Aahz wrote:

> In article <4bb92850$0$8827$c3e8da3@news.astraweb.com>, Steven D'Aprano
> <steve@REMOVE-THIS-cybersource.com.au> wrote:
>>
>>Nevertheless, it is a common intuition that the list comp variable
>>should *not* be exposed outside of the list comp, and that the for-loop
>>variable should. Perhaps it makes no sense, but it is very common --
>>I've never heard of anyone being surprised that the for-loop variable is
>>exposed, but I've seen many people surprised by the fact that list-comps
>>do expose their loop variable.
>
> I've definitely seen people surprised by the for-loop behavior.

What programming languages were they used to (if any)?

I don't know of any language that creates a new scope for loop variables,
but perhaps that's just my ignorance...


--
Steven


== 3 of 5 ==
Date: Fri, Apr 16 2010 5:34 pm
From: Chris Rebert


On Fri, Apr 16, 2010 at 5:20 PM, Steven D'Aprano
<steve@remove-this-cybersource.com.au> wrote:
> On Fri, 16 Apr 2010 08:48:03 -0700, Aahz wrote:
>> In article <4bb92850$0$8827$c3e8da3@news.astraweb.com>, Steven D'Aprano
>> <steve@REMOVE-THIS-cybersource.com.au> wrote:
>>>Nevertheless, it is a common intuition that the list comp variable
>>>should *not* be exposed outside of the list comp, and that the for-loop
>>>variable should. Perhaps it makes no sense, but it is very common --
>>>I've never heard of anyone being surprised that the for-loop variable is
>>>exposed, but I've seen many people surprised by the fact that list-comps
>>>do expose their loop variable.
>>
>> I've definitely seen people surprised by the for-loop behavior.
>
> What programming languages were they used to (if any)?
>
> I don't know of any language that creates a new scope for loop variables,
> but perhaps that's just my ignorance...

Well, technically it's the idiomatic placement of the loop variable
declaration rather than the loop construct itself, but:

//Written in Java
//Can trivially be changed to C99 or C++
for (int i = 0; i < array.length; i++)
{
// code
}
// variable 'i' no longer accessible

//Using a for-each loop specific to Java
for (ItemType item : array)
{
// code
}
// variable 'item' no longer accessible

Cheers,
Chris
--
http://blog.rebertia.com


== 4 of 5 ==
Date: Fri, Apr 16 2010 5:58 pm
From: MRAB


Steven D'Aprano wrote:
> On Fri, 16 Apr 2010 08:48:03 -0700, Aahz wrote:
>
>> In article <4bb92850$0$8827$c3e8da3@news.astraweb.com>, Steven D'Aprano
>> <steve@REMOVE-THIS-cybersource.com.au> wrote:
>>> Nevertheless, it is a common intuition that the list comp variable
>>> should *not* be exposed outside of the list comp, and that the for-loop
>>> variable should. Perhaps it makes no sense, but it is very common --
>>> I've never heard of anyone being surprised that the for-loop variable is
>>> exposed, but I've seen many people surprised by the fact that list-comps
>>> do expose their loop variable.
>> I've definitely seen people surprised by the for-loop behavior.
>
> What programming languages were they used to (if any)?
>
> I don't know of any language that creates a new scope for loop variables,
> but perhaps that's just my ignorance...
>
The programming language Ada comes to mind (the variable exists only
within the body of the loop and is read-only like a constant), so yes,
that's just your ignorance. ;-)


== 5 of 5 ==
Date: Fri, Apr 16 2010 6:43 pm
From: "Alf P. Steinbach"


* Steven D'Aprano:
> On Fri, 16 Apr 2010 08:48:03 -0700, Aahz wrote:
>
>> In article <4bb92850$0$8827$c3e8da3@news.astraweb.com>, Steven D'Aprano
>> <steve@REMOVE-THIS-cybersource.com.au> wrote:
>>> Nevertheless, it is a common intuition that the list comp variable
>>> should *not* be exposed outside of the list comp, and that the for-loop
>>> variable should. Perhaps it makes no sense, but it is very common --
>>> I've never heard of anyone being surprised that the for-loop variable is
>>> exposed, but I've seen many people surprised by the fact that list-comps
>>> do expose their loop variable.
>> I've definitely seen people surprised by the for-loop behavior.
>
> What programming languages were they used to (if any)?
>
> I don't know of any language that creates a new scope for loop variables,
> but perhaps that's just my ignorance...

MRAB has mentioned Ada, let me mention C++ ...


<code language="C++">
#include <assert.h>

int main()
{
int const i = 42;

for( int i = 0; i < 10; ++i )
{
// blah blah
}
assert( i == 42 );
}
</code>


Java and C# take a slightly different approach where code analogous to the above
won't compile. But it's still a nested scope. E.g. ...


<code language="Java">

class App
{
static public void main( String[] args )
{
for( int i = 0; i < 10; ++i )
{
// blah blah
}

// Uncomment statement below to get compilation error:
//System.out.println( i );
}
}
</code>


So, yes, considering Ada, C++, Java and C# -- and so on. ;-)


Cheers & hth.,

- Alf

==============================================================================
TOPIC: Can anyone reproduce this crash?
http://groups.google.com/group/comp.lang.python/t/d9ae972a6dc8e80d?hl=en
==============================================================================

== 1 of 1 ==
Date: Fri, Apr 16 2010 12:10 pm
From: Terry Reedy


On 4/16/2010 9:50 AM, Alf P. Steinbach wrote:
> * Alf P. Steinbach:
>>
>> Found a another bug discussion with
>>
>> * same exception,
>> 0xc0000417 STATUS_INVALID_CRUNTIME_PARAMETER
>>
>> * same address,
>> 0x78588389
>>
>> * almost same Python version,
>> namely Py3,
>>
>> * almost same context,
>> namely occurring when program terminates,
>>
>> at
>>
>> <url:
>> http://www.mail-archive.com/pyinstaller@googlegroups.com/msg01564.html>
>>
>> Can I report a bug with so little information -- not generally
>> reproducible, but hey, someone else has seen something nearly identical?
>
> OK, I did, <url: http://bugs.python.org/issue8418>.

Good report. I might have just dismissed this as a random windows bug ;-).

Terry Jan Reedy


==============================================================================
TOPIC: distutils examples?
http://groups.google.com/group/comp.lang.python/t/976f0b913e6b2729?hl=en
==============================================================================

== 1 of 2 ==
Date: Fri, Apr 16 2010 12:12 pm
From: TomF


I'm packaging up a program with distutils and I've run into problems
trying to get setup.py right. It's not a standalone package; it's a
script plus modules, data files and documentation. I've been over the
distutils documentation but I'm having trouble getting the package_data
and data_files correct.

Is there a repository of distutils examples somewhere that I can look at?
The documentation is not particularly instructive for me.

Thanks,
-Tom

== 2 of 2 ==
Date: Fri, Apr 16 2010 12:21 pm
From: Philip Semanchuk

On Apr 16, 2010, at 3:12 PM, TomF wrote:

> I'm packaging up a program with distutils and I've run into problems
> trying to get setup.py right. It's not a standalone package; it's a
> script plus modules, data files and documentation. I've been over
> the distutils documentation but I'm having trouble getting the
> package_data and data_files correct.
>
> Is there a repository of distutils examples somewhere that I can
> look at?
> The documentation is not particularly instructive for me.

Hi Tom,
I don't know of a dedicated repository of distutils examples, but
there's so many packages out there that it's sure that someone's
already done what you're trying to do. If you can find that package
(easier said than done, I know) then you have a working example.

THat's the main way I've been learning how to write setup.py files. I
also find the distutils documentation somewhat opaque.


HTH
P

==============================================================================
TOPIC: question about list extension
http://groups.google.com/group/comp.lang.python/t/7d837e4cf084d84f?hl=en
==============================================================================

== 1 of 2 ==
Date: Fri, Apr 16 2010 12:16 pm
From: Terry Reedy


On 4/16/2010 9:41 AM, J wrote:
> Ok... I know pretty much how .extend works on a list... basically it
> just tacks the second list to the first list... like so:
>
>>>> lista=[1]
>>>> listb=[2,3]
>>>> lista.extend(listb)
>>>> print lista;
> [1, 2, 3]

This shows right here that lista is extended in place. If you are not
convinced, print(id(lista)) before and after.

> what I'm confused on is why this returns None:
>
>>>> lista=[1]
>>>> listb=[2,3]
>>>> print lista.extend(listb)
> None

It is conventional in Python (at least the stdlib) that methods that
mutate mutable objects 'in-place' return None to clearly differentiate
them from methods that return new objects. There are pluses and minuses
but such it is.

Terry Jan Reedy

== 2 of 2 ==
Date: Fri, Apr 16 2010 12:34 pm
From: J


On Fri, Apr 16, 2010 at 15:16, Terry Reedy <tjreedy@udel.edu> wrote:
> On 4/16/2010 9:41 AM, J wrote:
>>
>> Ok... I know pretty much how .extend works on a list... basically it
>> just tacks the second list to the first list... like so:
>>
>>>>> lista=[1]
>>>>> listb=[2,3]
>>>>> lista.extend(listb)
>>>>> print lista;
>>
>> [1, 2, 3]
>
> This shows right here that lista is extended in place. If you are not
> convinced, print(id(lista)) before and after.

Thanks for the explanations, everyone...

I was just a bit confused about how .extend was working... I
originally thought that it returned a new object and linked lista to
that, but I realize that it directly manipulates the list object
instead...

I'm not sure why I got that idea stuck in my head, but it was there,
so I asked :)

==============================================================================
TOPIC: getting a string as the return value from a system command
http://groups.google.com/group/comp.lang.python/t/4d8ee1476d14f4be?hl=en
==============================================================================

== 1 of 4 ==
Date: Fri, Apr 16 2010 12:06 pm
From: Catherine Moroney


Hello,

I want to call a system command (such as uname) that returns a string,
and then store that output in a string variable in my python program.

What is the recommended/most-concise way of doing this?

I could always create a temporary file, call the "subprocess.Popen"
module with the temporary file as the stdout argument, and then
re-open that temporary file and read in its contents. This seems
to be awfully long way of doing this, and I was wondering about
alternate ways of accomplishing this task.

In pseudocode, I would like to be able to do something like:
hostinfo = subprocess.Popen("uname -srvi") and have hostinfo
be a string containing the result of issuing the uname command.

Thanks for any tips,

Catherine


== 2 of 4 ==
Date: Fri, Apr 16 2010 1:09 pm
From: Robert Kern


On 2010-04-16 14:06 PM, Catherine Moroney wrote:
> Hello,
>
> I want to call a system command (such as uname) that returns a string,
> and then store that output in a string variable in my python program.
>
> What is the recommended/most-concise way of doing this?
>
> I could always create a temporary file, call the "subprocess.Popen"
> module with the temporary file as the stdout argument, and then
> re-open that temporary file and read in its contents. This seems
> to be awfully long way of doing this, and I was wondering about
> alternate ways of accomplishing this task.

p = subprocess.Popen(['uname', '-srvi'], stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
stdout, stderr = p.communicate()

--
Robert Kern

"I have come to believe that the whole world is an enigma, a harmless enigma
that is made terrible by our own mad attempt to interpret it as though it had
an underlying truth."
-- Umberto Eco

== 3 of 4 ==
Date: Fri, Apr 16 2010 1:46 pm
From: Catherine Moroney


Robert Kern wrote:
> On 2010-04-16 14:06 PM, Catherine Moroney wrote:
>> Hello,
>>
>> I want to call a system command (such as uname) that returns a string,
>> and then store that output in a string variable in my python program.
>>
>> What is the recommended/most-concise way of doing this?
>>
>> I could always create a temporary file, call the "subprocess.Popen"
>> module with the temporary file as the stdout argument, and then
>> re-open that temporary file and read in its contents. This seems
>> to be awfully long way of doing this, and I was wondering about
>> alternate ways of accomplishing this task.
>
> p = subprocess.Popen(['uname', '-srvi'], stdout=subprocess.PIPE,
> stderr=subprocess.PIPE)
> stdout, stderr = p.communicate()
>

Thanks, I knew there had to be a more elegant way of doing that.

Catherine


== 4 of 4 ==
Date: Fri, Apr 16 2010 7:09 pm
From: Larry Hudson


Catherine Moroney wrote:
> Hello,
>
> I want to call a system command (such as uname) that returns a string,
> and then store that output in a string variable in my python program.
>
> What is the recommended/most-concise way of doing this?
>
> I could always create a temporary file, call the "subprocess.Popen"
> module with the temporary file as the stdout argument, and then
> re-open that temporary file and read in its contents. This seems
> to be awfully long way of doing this, and I was wondering about
> alternate ways of accomplishing this task.
>
> In pseudocode, I would like to be able to do something like:
> hostinfo = subprocess.Popen("uname -srvi") and have hostinfo
> be a string containing the result of issuing the uname command.
>
> Thanks for any tips,
>
> Catherine

import os
txt = os.popen("uname -srvi")
hostinfo = txt.readline()

Or if the command outputs a number of lines (such as 'ls'),
use txt.readlines() to put the result into a list of strings.

-=- Larry -=-

==============================================================================
TOPIC: SEC apparently about to mandate Python for a particular financial use
http://groups.google.com/group/comp.lang.python/t/12f4638631ad0be7?hl=en
==============================================================================

== 1 of 3 ==
Date: Fri, Apr 16 2010 3:01 pm
From: Mike Kent


http://jrvarma.wordpress.com/2010/04/16/the-sec-and-the-python/


== 2 of 3 ==
Date: Fri, Apr 16 2010 3:09 pm
From: Chris Rebert


On Fri, Apr 16, 2010 at 3:01 PM, Mike Kent <mrmakent@gmail.com> wrote:
> SEC apparently about to mandate Python for a particular financial use
> http://jrvarma.wordpress.com/2010/04/16/the-sec-and-the-python/

See thread from 5 days ago:
http://mail.python.org/pipermail/python-list/2010-April/1241578.html

Cheers,
Chris


== 3 of 3 ==
Date: Fri, Apr 16 2010 4:19 pm
From: Gnarlodious


"technology as a regulatory tool", what a concept! Pretty impressive
change we can believe in. Here's hoping open-source human-readable
computer programs become the standard for verifiable elections and all
sorts of financial uses. Otherwise, computers will end up being used
to defraud the populace rather than to serve it.

-- Gnarlie

==============================================================================
TOPIC: What license/copyright text to include and where to include it when
selling a commercial Python based application?
http://groups.google.com/group/comp.lang.python/t/cdbf16fe25009065?hl=en
==============================================================================

== 1 of 1 ==
Date: Fri, Apr 16 2010 3:45 pm
From: "Martin v. Loewis"


> 1. What Python license text/copyright text should I place in our
> printed user manual?
>
> 2. What Python license text/copyright text should I include in
> our online documentation?
>
> 3. What Python license text/copyright text should I include in
> product's license text file?
>
> 4. What Python license text/copyright text should I include in
> application's splash screen and about dialog boxes?

IANAL, and you should really ask your own lawyer.

However, the relevant clause seems to be clause 2, which requires you to
retain a copy of the license "in Python alone or in any derivative
version prepared by Licensee".

IIUC, your product will be a derivative version (ask your lawyer whether
that's a correct assessment). Then, the only requirement is to have a
copy of the license in the derivative work, i.e. in the software
installation. No need to include it in the manual, the online
documentation, or the splash screen. Putting it into the product's
license text file might be appropriate, as might be putting it next to it.

Regards,
Martin

==============================================================================
TOPIC: feature request for a wget -r like implementation in python3
http://groups.google.com/group/comp.lang.python/t/1a77c5634c929619?hl=en
==============================================================================

== 1 of 1 ==
Date: Fri, Apr 16 2010 4:14 pm
From: "Gabriel Genellina"


En Thu, 15 Apr 2010 16:37:37 -0300, gert <gert.cuykens@gmail.com> escribió:

> [a wget -r like implementation in python3]
> So I can make a recursive http download script

What about calling wget itself? subprocess.call(['wget',...])


--
Gabriel Genellina

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

You received this message because you are subscribed to the Google Groups "comp.lang.python"
group.

To post to this group, visit http://groups.google.com/group/comp.lang.python?hl=en

To unsubscribe from this group, send email to comp.lang.python+unsubscribe@googlegroups.com

To change the way you get mail from this group, visit:
http://groups.google.com/group/comp.lang.python/subscribe?hl=en

To report abuse, send email explaining the problem to abuse@googlegroups.com

==============================================================================
Google Groups: http://groups.google.com/?hl=en

0 Comments:

Post a Comment

Subscribe to Post Comments [Atom]

<< Home


Real Estate