Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use sys.argv in python to check length of arguments so it can run as script?

Ok so here is part of my code (I have imported sys)

if __name__ == '__main__':


MyCaesarCipher = CaesarCipher() #MyCaesarCipher IS a CaesarCipher()

if len(sys.argv) >1:
    #what will it check? 

Done = False   
while not Done:
    print('C Clear All')
    print('L Load Encrypted File')
    print('R Read Decrypted File')
    print('S Store Encrypted File')
    print('W Write Decrypted File')
    print('O Output Encrypted Text')
    print('P Print Decrypted Text')
    print('E Encrypt Decrypted Text')
    print('D Decrypted Encrypted Text')
    print('Q Quit')
    print('----------------')
    print('Enter Choice>')

So the thing is I want to do is if the command line length is more than 1, the program runs as a script.

This is the instruction:

If no command line arguments are input, then the script enters menu mode. If more than 1 command line argument (anything other than script name) is provided during the run of the script it enters single run mode.

I do not know what this means, though.

like image 604
Elsa Avatar asked Mar 14 '15 05:03

Elsa


People also ask

How do you find the length of an argument in Python?

We will use len() function or method in *args in order to count the number of arguments of the function in python.

What is the length of SYS argv in Python?

Explanation: The first argument is the name of the program itself. Therefore the length of sys. argv is one more than the number arguments.

How do you use Len SYS argv?

len()- function is used to count the number of arguments passed to the command line. Since the iteration starts with 0, it also counts the name of the program as one argument. If one just wants to deal with other inputs they can use (len(sys. argv)-1).

How do I run SYS argv in Python?

How do I use SYS argv in Python script? To use, sys. argv in a Python script, we need to impo r t the sys module into the script. Like we import all modules, "import sys" does the job.


1 Answers

What is sys.arvg:

The list of command line arguments passed to a Python script. argv[0] is the script name.

Demo: File Name: 1.py

import sys

if __name__=="__main__":
    print "command arguments:", sys.argv 

Output:

$ python 1.py arg1 arg2 
command arguments: ['1.py', 'arg1', 'arg2']
$ python 1.py
command arguments: ['1.py']

Your problem is, we have to run code by Command Line Argument and by Menu also.

When User provided the Enter Choice from the command line then use provided value to next process.

If User not provided the Enter Choice from the command line then ask User to Enter Choice from the Menu.

Demo:

File Name: 1.py

import sys

if __name__ == '__main__':
    try:
        arg_command = sys.argv[1]
    except IndexError:
        arg_command = ""

    Done = False
    while not Done:
        if arg_command=="":
            print('\nMenu')
            print('C Clear All')
            print('L Load Encrypted File')
            print('Q Quit')
            print('----------------')
            print('Enter Choice>')
            command = raw_input('Enter Selection> ').strip()[0].upper()
        else:
            command = arg_command
            #- set arg value to empty to run Menu option again.
            arg_command = ""

        if command == 'C':
            print "In Clear All event."
        elif command == 'L':
            print "In Clear All event."
        elif command == "Q":
            break
        else:
            print "Wrong Selection."

Output:

Enter Choice given from the Command Line:

$ python 1.py C
In Clear All event.

Menu
C Clear All
L Load Encrypted File
Q Quit
----------------
Enter Choice>
Enter Selection> q
$ 

No Command Line argument.

$ python 1.py

Menu
C Clear All
L Load Encrypted File
Q Quit
----------------
Enter Choice>
Enter Selection> l
In Clear All event.

Menu
C Clear All
L Load Encrypted File
Q Quit
----------------
Enter Choice>
Enter Selection> q
$ 
like image 90
Vivek Sable Avatar answered Sep 21 '22 03:09

Vivek Sable