Inconsistency on getting arguments

Chris Angelico rosuav at gmail.com
Tue Jun 25 12:03:52 EDT 2013


On Wed, Jun 26, 2013 at 12:17 AM, Dave Angel <davea at davea.name> wrote:
> On 06/25/2013 09:55 AM, Peter Otten wrote:
>>
>> Marco Perniciaro wrote:
>>
>>> Hi,
>>> I've been working with Python for a long time.
>>> Yet, I came across an issue which I cannot explain.
>>>
>>> Recently I have a new PC (Windows 7).
>>> Previously I could call a Python script with or without the "python" word
>>> at the beginning. Now the behavior is different if I use or not use the
>>> "python" prefix!
>>>
>>> I only have Python 2.7 installed and the path in in my environment
>>> variable. I create a simple file called "example.py" which contains two
>>> lines:
>>>
>>>        import sys
>>>        print sys.argv
>>>
>>> This is the output result:
>>>
>>>        C:\Users\mapr>example.py a b c
>>>        ['C:\\Users\\mapr\\example.py']
>>>
>>>        C:\Users\mapr>python example.py a b c
>>>        ['example.py', 'a', 'b', 'c']
>>>
>>> Can someone please explain?
>>
>>
>> I'm not a Windows user, but I'd try
>>
>> http://docs.python.org/2/using/windows.html#executing-scripts
>>
>> with python.exe instead of pythonw.exe. Maybe the %* is missing.
>>
>
> I'm not a Windows user either (at least for quite a while).  But I'd
> investigate with assoc and ftype and see that the ftype includes the
> trailing %* parameter.  Do not mess with .pyw and  pythonw, as they are both
> for GUI programs, and you're doing a console program.
>
> I think if you type ftype it'll list them all.  So if you grep that, you
> should be able to find the line for  Python.File   And yeah, you can
> probably tell ftype to just display that line, but I don't have a system to
> try it on, or even to use /? on, so I'm not going to issue unsafe advice.

I do have access to a system to test this on, so here's the results:

C:\>assoc .py
.py=Python.File

C:\>ftype Python.File
Python.File="C:\Python27\python.exe" "%1" %*

As I understand it, the first command will tell you the name that you
need for the second command, and the second one will tell you what
actually gets executed. I have several Pythons installed on this
particular computer, apparently with 2.7 being the default (not that I
care; I usually invoke "\python33\python script.py" or similar to
choose my interpreter). Hope that's of value!

ChrisA



More information about the Python-list mailing list