I am trying to remember and reconstruct what I am talking about. I found the original message and it shows I was using ipython3
sys.argv holds a different value under ipython3 and python3.
The documentation of python 3.6.10 regarding argument parsing does indeed match what you report for python3. But it behaves differently for ipython3. At least while using it interactively.
But also in script processing
I just tried the following script
----- begin script
print("argument parsing") print(sys.argv)
------- end script
script processing under ipython3 does following
$ ipython3 argument-parsing.py argument parsing ['/media/guy/6C62-3B50/guy/Projecten/Computer/programmeren/python/argument-parsing.py']
script processing under python3 does following
$ python3 argument-parsing.py argument parsing ['argument-parsing.py']
If one is aware of the difference one can compensate for it.
I currently do not have space in my life and my head to further pursuit this or programming.
So I will leave at this.
The documentation is correct but their is a difference in argument parsing for python 3.8 and ipython3 version 7.13.0 That can lead to errors. At least in this specific trial and for these versions specified.
On 4/06/2021 16:06, Julien Palard wrote:
Hi, you're quoting a long paragraph, I don't know what's wrong in it, let's try:
Le 3/14/21 à 8:48 PM, guyrenebongers71 via docs a écrit :
it reads : when no script and no arguments are given, sys.argv is an empty string.
import sys sys.argv
[''] # This one looks OK
When the script name is given as '-' (meaning standard input), sys.argv is set to '-'.
$ echo "print(__import__('sys').argv)" | python - ['-'] # This one looks OK too.
When -c command is used, sys.argv is set to '-c'.
$ python -c 'print(__import__("sys").argv)' ['-c'] # This one is OK too.
When -m module is used, sys.argv is set to the full name of the located module.
$ echo "print(__import__('sys').argv)" > argv.py $ python -m argv ['/tmp/argv.py']
Maybe this one? "full name" could be written "full path"?
Options found after -c command or -m module are not consumed by the Python interpreter’s option processing but left in sys.argv for the command or module to handle.
$ python -c "print(__import__('sys').argv)" foo bar ['-c', 'foo', 'bar'] # This one is true too.
$ python -m argv foo bar ['/home/mdk/clones/python/python-docs-fr/argv.py', 'foo', 'bar'] # This one is true too.
OOOhhhhhh I think I understand, you tried with ipython, not python, in which case it's the IPython documentation that should tell it's the full path, not the Python documentation, an I right?