python 2.7.12 on Linux behaving differently than on Windows
Gregory Ewing
greg.ewing at canterbury.ac.nz
Tue Dec 6 01:28:52 EST 2016
BartC wrote:
> On 05/12/2016 19:29, Michael Torrie wrote:
>
>> On 12/05/2016 11:50 AM, BartC wrote:
>
>
>>> So how do I do:
>>>
>>> gcc *.c -lm
>>>
>>> The -lm needs to go at the end.
>>>
>>> Presumably it now needs to check each parameter seeing if it resembles a
>>> file more than it does an option? And are options automatically taken
>>> care of, or is that something that, unlike the easier wildcards, need to
>>> be processed explicitly?
>
>
> This was a response to someone saying the wildcard param needs to be at
> the end. There need be no such restriction if handled properly (ie. no
> auto-expansion).
>
> But a similar example, suppose a syntax is:
>
> appl *.* [options]
>
> but one of the files in the list is called "-lm", or some other option
> that can do things the user didn't want (with gcc, -lm is harmless).
>
> Without expansion, input is easy to parse: filespec, followed by
> optional options. But with expansion, now you have to decide if a
> particular argument is an option, or a filename.
>
> And if there's an error in an option, you may have to abort, which means
> throwing away that list of files which, in some cases, can run into
> millions.
>
>> Not having glob expansion be in individual programs makes things much
>> more explicit, from the program's point of view. It provides an
>> interface that takes filename(s) and you provide them, either explicitly
>> (via popen with no shell), or you can do it implicitly but in an
>> interactive way via the shell using expansion. Personal preference but
>> I believe it's a much better way because it's explicit from the
>> program's point of view as there's no question about the program's
>> behavior.
>>
>> Different strokes for different folks as they say.
>
>
> I must have given ten or twenty scenarios where such auto-expansion is
> problematical. And yet people are still in denial. It's been in Unix for
> decades therefore there's nothing wrong with it!
>
> But maybe people simply avoid all the situations that cause problems.
> Interfaces are specified in a certain manner, given that input can be
> any long stream of filenames and/or options with no order and no
> positional significance. Non-file parameters that use ? or * are
> prohibited. You can't do the equivalent of:
>
> >DIR *.b *.c
>
> And get a list of *.b files, with a heading and summary lines, then a
> list of *.c files with its own heading and summary. It would be one
> monolithic list.
>
> So everyone is working around the restrictions and the problems. Which
> is exactly what I would have to do.
>
> That doesn't change the fact that the Windows approach is considerably
> more flexible and allowing more possibilities.
>
More information about the Python-list
mailing list