Scripting
Overviewβ
This lesson starts with an explanation of a scripting language vs a compiled language, then goes on to discuss the idea of a script. The majority of the lesson is spent teaching file I/O, with just a couple slides near the end for user input.
Learning Objectivesβ
In this lesson, students will:
- Explain the uses of scripting.
- Write scripts that perform file I/O.
- Write scripts that take user input.
Durationβ
35 minutes.
Agendaβ
| Duration | Activity |
|---|---|
| 3 mins | Welcome |
| 8 mins | Introducing Scripting |
| 16 mins | File I/O |
| 7 mins | User Input |
| 3 mins | Summary |
Lesson Objectivesβ
After this lesson, you will be able to...
- Explain the uses of scripting.
- Write scripts that perform file I/O.
- Write scripts that take user input.
Introductionβ
Discussion: What comes to mind when you hear the word "scripting"?

Talking Points:
- "Chances are you've run into a problem and heard a coworker smugly say, 'don't worry!, I'll just write a script for it'. Maybe it sounded fancy or mysterious at the time, but today we'll demystify it, and well, now you're going to be that coworker!"
π« Scripting is NOT
MysteriousDifficultImpossibleOnly for super smart, expert programmers
β Scripting IS
- Helpful.
- Convenient.
- Fun.
- Makes you look cool to your coworkers!
What's a Scripting Language?β
There are only two types of programming languages in the world: scripting languages or compiled languages.
All languages, like Python, are one of these two categories.
Scripting languages:
- One is Python!
- Write code, then immediate run it:
python my_file.py - Executes statements in order.
- Find a bug? Fix it, run it, repeat.
Compiled languages:
- Compile means "build".
- We can't immediate run code - the computer can't just read the code and needs to translate it to something it understands first.
- Write code, then compile it (not quick!), then run it.
- Find a bug? Fix it, wait for the code to compile, run it, repeat.
You don't need to memorize this - just know that there's a difference, and Python is scripting.
What do you think a script is?
- It's not important for them to memorize what compiled is - just get the idea that it's a different kind of language.
Talking Points:
- A
scripting languageor interpreted language like Python executes statements in order - A
scriptis typically a file with some Python code in it - A script might calculate something, take input, give output, or do file I/O
All programming languages that exist in the world fall into one of two buckets. A scripting language or interpreted language like Python executes statements in order. A compiled language needs to build your program before running it.
Imagine; you wrote an application with Java. Before you can run it, you need to compile it - turn it After compiling completed, you run your application. When running your application, you notice a bug. To fix it, you have to stop your application, go back to source code, fix the bug, wait for the code to recompile, and restart your application to confirm that it is fixed. And if you find another bug, youβll need to repeat that process again.
In a scripting language, you can fix the bug and just need to reload your application βno need to restart or recompile anymore. Itβs as simple as that.
Technically, you've been writing scripts already.
What is a Script?β
Just some code that does something.
- Usually written in a scripting language.
- Can be as simple or as complex as needed!
Let's write a script:
- Create a file called
my_script.py - Open the file in
Atom. - Type the line
print("hello world!")
CONGRATS: You now have a script!
Look familiar? You've been scripting since day 1!
Talking Points: It turns out, you already know how to do this!
Scripting, Commonlyβ
When people say scripts, though, they usually mean code that:
- Takes input.
- Gives output.
- Reads or writes to a file.
- Performs a task.
We have "perform a task" down!
Talking Points: All Python files you write are scripts! But when people say scripts, that's not really what they mean.
Quick Reviewβ
Script:
- Just code that does something. You've written dozens of scripts in Python so far!
Scripting Language:
- A language where you can immediately run code. Python is one!
- Write -> Run.
Compiled Language:
- Compile means build! We can't immediately run code.
- Write -> Build -> Run.
We're only working with Python, so we can just write and run our code!
Next Up: Playing with files in Python.
Scripting, Part 1: Filesβ
Let's further our programming toolkit.
On your computer, you can:
- Create or open a file (text, jpg, Word doc...).
- Read it.
- Edit it.
- Close it.
These are pretty basic actions. Can we do it in Python?
We Do: Let's Read a Fileβ
With files, there are three key points.
- Tell Python to open the file:
my_file = open(<file name>) - Do something with the file! (Read it, edit it, etc).
- Close the file when you're done:
my_file.close()
First, let's check out read: View, but not change, the contents, with read().
Let's try. On your Desktop, create a file called "hello.txt" with the word "hi" in it.
Now, also on your Desktop, create a file,
first_reading.py. Fill it with:my_file = open("hello.txt")
print(my_file.read())
my_file.close()Run it!
Note: The file must exist already!
What About Editing Files?β
In programming, "edit" is referred to as "write", short for "write to." How do we write a file?
open(<file name>) has optional parameters: open(<file name>, <mode>)
- Mode: "What do you want to do with the file?" The default is "read." Use
wfor "write":
# To read a file:
my_file = open("hello.txt")
print(my_file.read()) ## We want this to be write, not read!
my_file.close()
# To write a file:
my_file = open("hello.txt", "w")
## Write some stuff
my_file.close()
Important: Write overwrites the current file!
Talking Points:
- Reinforce that write is "replace what's there", not "add to the file".
We Do: Writing Filesβ
Let's try this. Change your script. We're going to make it a little more complex - since we're programming, we can use variables!
# Open the file hello.txt
my_file = open("hello.txt", "w")
# Write some content to my_file.txt
my_file.write("Hello world")
my_text = "Apple juice is delicious." # Use the variable!
my_file.write(my_text) # Writes "Apple juice is delicious."
my_file.write("Have a nice day!")
# Always close the file
my_file.close()
Run it!
Open the file to check.
Thought: How could you make new lines?
- Can you give a few reasons to always close the file?
Discussion: Writing Complex Stringsβ
What happens if we try to write multiple strings?
# But it doesn't work with write.
my_file = open("a_file.txt", "w")
my_text = "Apple juice is delicious."
my_file.write(my_text, "Don't you think?") # Error! Write takes 1 argument (2 given).
my_file.close()
Error! write only takes one argument. We need to concat the strings. Always just pass one argument to file.write().
my_file = open("a_file.txt", "w")
my_text = "Apple juice is delicious."
string_to_write = my_text + "Don't you think?" # Make one string here!
my_file.write(string_to_write)
my_file.close()
We Do: Creating Filesβ
What if the file doesn't exist yet?
Write to the rescue!
- Write opens a file for writing...
- But it also creates it if need be!
At the bottom of your script, add:
# Open OR create file totally_new_file.txt
my_new_file = open("totally_new_file.txt", "w")
# Write some content to totally_new_file.txt
my_new_file.write("Content goes here")
# Always close the file
my_new_file.close()
Check your desktop after running it!
You Do: Create a fileβ
Now, try it yourself. Write a new script:
Openforreadmode your existinga_file.txt.Read()the file and save the contents into a variable,file_contents.- Under that, using
write, create a file calledmy_file_script.py. - In
my_file_script.py, write what you read froma_file.txt.
Don't forget to close() your files!
3 minutes
file_to_read = open("a_file.txt")
file_to_write = open("my_file_script.txt", "w")
string_to_write = file_to_read.read()
file_to_write.write(string_to_write)
file_to_read.close()
file_to_write.close()
Quick Review IIβ
You can open, read, and write files with Python.
Write will create the file if it doesn't already exist.
Always close your files!
file_to_read = open("a_file.txt")
file_to_write = open("my_file_script.txt", "w")
string_to_write = file_to_read.read()
file_to_write.write(string_to_write)
file_to_read.close()
file_to_write.close()
Next up: More advanced file options.
Other File Modesβ
What if we want to read AND write a file? Or write to the end of a file instead of overwriting what's there?
open has a few other modes.
| Value | Mode | Purpose |
|---|---|---|
r | Reading | Read only. The default! |
w | Write | Use to change (and create) file contents |
a | Append | Use to write to the end of a file |
r+ | Read Plus | Can do both read and write |
Don't memorize this; just know it's there. A lot of programming is understanding your options and then Googling the syntax! The biggest thing for you to learn is the concepts that Python can do.
Stress that this is a lot to take in and they don't need to remember it all. We're practicing for your understanding, not your memorization. (Also, the more we practice, the more likely you'll just remember it).
Show
r+anda. You can work off this basic code:
# Open the file hello.txt
my_file = open("hello.txt", "w")
my_file.read() # Error! Not readable.
my_file.write("hey")
# Close the file
my_file.close()
I Do: The With Keywordβ
Always remembering to close a file can be hard. There's another way to open files so Python closes it for us!
# Instead of:
file_object = open("my_file.txt", "w")
file_object.write("Hello World!")
file_object.close()
# We can say:
with open("my_file.txt", "w") as file_object: # This line replaces the open and close above
file_object.write("Hello World!") # This line is the same; note the indent!
Talking Points:
- As you can see, file I/O is associated with a lot of potential errors.
- Sometimes if a file doesn't close properly, this can lead to:
- Memory pollution on your computer
- Keeping a file in use when it isn't
- These are bad problems! Luckily, Python has our back once again with
with! Withshortens our code, catches errors gracefully, and makescloseunnecessary.
https://repl.it/@brandiw/03-Python-Scripting-03
What Else is in File?β
These are just for reference - we won't be using them!
Do you have a list that you want to write on multiple lines? Use
my_file.writelines([<your list>])Does your file have things on multiple lines you want to read into a list variable? Use
list_contents = my_file.readlines()Separating some written lines? Add
\nto thewrite()
Here is a repl.it, if you'd like: "https://repl.it/@brandiw/03-Python-Scripting-01
Quick Review 2β
File has a lot of advanced options.
- You can write a list across multiple lines, or read a file with multiple lines into a list variable.
- Write only takes one argument, so concat your strings!
- You can open files using
withto automatically close them.
# Instead of:
file_object = open("my_file.txt", "w")
file_object.write("Hello World!")
file_object.close()
# We can say:
with open("my_file.txt", "w") as file_object: # This line replaces the open and close above
file_object.write("Hello World!") # This line is the same; note the indent!
Next up: User Input!
What about User Input?β
We've just done a lot with file I/O (in/out).
We can prompt users for information, too.
You've seen this a few times (remember the error checking, with the try/catch?)! It's very common.
# Prompts with "input"
# Saves result in user_name
user_name = input("Please type your name:")
Here's a repl.it, if you'd like: https://repl.it/@brandiw/03-Python-Scripting-04?lite=true
You Do: Bring it all togetherβ
- Create a file called
about_script.py. - In it, prompt the user for their name. Then, prompt them for their favorite food.
- Using write, create a file called
about_me.txt. - In
about_me.txt, write out the name and favorite food in a sentence.
Bonus: Use format for forming your sentence!
5 minutes
Summary and Q&Aβ
Scripting language vs compiled language.
- Scripting languages: Write -> Run.
- Compiled languages: Write -> Build -> Run.
Script:
- Just some code!
File I/O:
my_file = open("a_file.txt", "w")my_file.write("Some content")my_file.write(my_text)my_file.close()
User input
user_name = input("Please type your name:")
Talking Points:
We accomplished quite a bit!
- Defined what a script means contextually.
- Showed how to open and close a file on your computer.
- Discussed different modes of opening files.
- Wrote a script that accepted a user's input