On 23Jan2023 13:46, 2qdxy4rzwzuui...@potatochowder.com 
<2qdxy4rzwzuui...@potatochowder.com> wrote:
On 2023-01-22 at 18:19:13 -0800,
Jach Feng <jf...@ms4.hinet.net> wrote:
1) Modify the sys.argv by inserting an item '--' before parsing it, ie.
sys.argv.insert(1, '--')
args = parser.parse_args()

Please don't do that.  :-)

Well... We routine mmodify argv when parsing a command line. It's just a list. It does assume I'm the only user of it.

In my mind, sys.argv belongs to Python, not the application.  Instead,
pass a newly created argument list to parse_args:

args = parser.parse_args(['--'] + sys.argv)

I do sometimes copy it:

    def main(argv):
        argv = list(argv)

for exactly the reasons you're alluding to. Then I'm free to modify the copy.

But for Jach Feng: the "--" is really expected as something the user does when they invoke your programme, _explicitly_ saying that what follows from here is not an argument. So the user is expected to type:

    your_script -x -y -- "-4^2+5.3*abs(-2-1)/2"

where there are -x and -y options, then end of options, then an argument, which would look like an option if there wasn't the "--" argument.

Cheers,
Cameron Simpson <c...@cskk.id.au>
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to