The sys.argv in Depth
In the last lesson, I showed you how to use the
sys.argv list to get the arguments passed in to a Python program from the command line. In this lesson, I’ll go a little bit more in-depth into what the
sys.argv list is and how it’s structured.
The simplest thing about the
sys.argv paradigm that Python sets up is that this
sys.argv object is just a list, and it’s a simple list of strings just like any other list of strings. However, this can also cause some issues because it’s not a very sophisticated way to represent the arguments. For example, those strings need to represent arguments of any type, like integers and file paths and stuff. And they do an admirable job of that, but they also don’t give you any built-in error handling or anything like that, so you’re going to have to do a little bit of extra work to make a really sophisticated, complex command line interface. But the
sys.argv list is really quite simple.
So, this part is really simple. They’re just passed in—in the same order that they were passed on the command line, they will exist in the
sys.argv. But of course, you might run into issues if, for example, an unsupported number of arguments is passed in or arguments of types that are unexpected are passed in. So say, for example, you want
arg3 to be a file so that you can open that file and write to it.
arg3 doesn’t actually represent a file, then you’ll run into an error—a
FileNotFoundError. And so you’ll have to put in some error handling on your own, which is something that I’ll cover in the next lesson: how to handle the fact that this representation is so simple—it’s just a list of strings—but how to handle the fact that that doesn’t really quite give you super-easy ways to enforce the correct formatting of a command line interface. So in the next lesson, I’ll head over into a code editor and show you several examples of the different problems you might run into as you work with integrating command line arguments into your Python code, and how to resolve—or at least mitigate—those problems.
Become a Member to join the conversation.