Chapter 22: Input and Output
Input and Output
Think of a program as a magical box. It’s useless if it just sits there. To be useful, it needs to receive information from the outside world (Input), process it in some way, and then send the results back out (Output). This interaction with the world is what gives programs life and purpose.
-
Input is the data that goes into the program.
-
Output is the data that comes out of the program.
This can take many forms. Input could be a key press, a mouse click, a file, a network message, or a sensor reading. Output could be text on a screen, a file saved to disk, a sound from a speaker, or a command sent to a robot.
We’ll focus on the most common and fundamental forms: standard input (usually the keyboard) and standard output (usually the screen).
Part 1: The Most Basic I/O: Console Input and Output
When you’re starting out, your primary way of interacting with a program is through the console or terminal. This is the text-based window where your program runs.
Output: Showing Information to the User
The simplest form of output is displaying text on the screen. In most languages, this is done with a function like print().
Python:
|
0 1 2 3 4 5 6 7 8 |
<span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Hello, World!"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"The answer is"</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"This is line one.\nThis is line two."</span><span class="token punctuation">)</span> <span class="token comment"># \n creates a new line</span> |
JavaScript (in a browser console):
|
0 1 2 3 4 5 6 7 8 |
console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Hello, World!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"The answer is"</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"This is line one.\nThis is line two."</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
R:
|
0 1 2 3 4 5 6 7 8 |
print<span class="token punctuation">(</span><span class="token string">"Hello, World!"</span><span class="token punctuation">)</span> cat<span class="token punctuation">(</span><span class="token string">"The answer is"</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">,</span> <span class="token string">"\n"</span><span class="token punctuation">)</span> cat<span class="token punctuation">(</span><span class="token string">"This is line one.\nThis is line two."</span><span class="token punctuation">)</span> |
Input: Getting Information from the User
The simplest form of input is reading what the user types on their keyboard.
Python uses the input() function. It pauses the program, waits for the user to type something and press Enter, and then returns what they typed as a string.
|
0 1 2 3 4 5 6 7 |
name <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"What is your name? "</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Hello, </span><span class="token interpolation"><span class="token punctuation">{</span>name<span class="token punctuation">}</span></span><span class="token string">! Nice to meet you."</span></span><span class="token punctuation">)</span> |
Important: input() always returns a string. If you need a number, you must convert it.
|
0 1 2 3 4 5 6 7 8 9 |
age_str <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"How old are you? "</span><span class="token punctuation">)</span> age <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span>age_str<span class="token punctuation">)</span> <span class="token comment"># Convert the string to an integer</span> next_age <span class="token operator">=</span> age <span class="token operator">+</span> <span class="token number">1</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Next year, you'll be </span><span class="token interpolation"><span class="token punctuation">{</span>next_age<span class="token punctuation">}</span></span><span class="token string">."</span></span><span class="token punctuation">)</span> |
You can combine these steps:
|
0 1 2 3 4 5 6 |
age <span class="token operator">=</span> <span class="token builtin">int</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"How old are you? "</span><span class="token punctuation">)</span><span class="token punctuation">)</span> |
JavaScript (in a browser environment) uses prompt().
|
0 1 2 3 4 5 6 7 8 9 10 11 |
<span class="token keyword">let</span> name <span class="token operator">=</span> <span class="token function">prompt</span><span class="token punctuation">(</span><span class="token string">"What is your name?"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Hello, "</span> <span class="token operator">+</span> name <span class="token operator">+</span> <span class="token string">"! Nice to meet you."</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> age <span class="token operator">=</span> <span class="token function">parseInt</span><span class="token punctuation">(</span><span class="token function">prompt</span><span class="token punctuation">(</span><span class="token string">"How old are you?"</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">let</span> nextAge <span class="token operator">=</span> age <span class="token operator">+</span> <span class="token number">1</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span><span class="token string">"Next year, you'll be "</span> <span class="token operator">+</span> nextAge <span class="token operator">+</span> <span class="token string">"."</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
R uses readline().
|
0 1 2 3 4 5 6 7 8 9 10 11 |
name <span class="token operator"><-</span> readline<span class="token punctuation">(</span><span class="token string">"What is your name? "</span><span class="token punctuation">)</span> cat<span class="token punctuation">(</span><span class="token string">"Hello, "</span><span class="token punctuation">,</span> name<span class="token punctuation">,</span> <span class="token string">"! Nice to meet you.\n"</span><span class="token punctuation">,</span> sep<span class="token operator">=</span><span class="token string">""</span><span class="token punctuation">)</span> age <span class="token operator"><-</span> as.integer<span class="token punctuation">(</span>readline<span class="token punctuation">(</span><span class="token string">"How old are you? "</span><span class="token punctuation">)</span><span class="token punctuation">)</span> next_age <span class="token operator"><-</span> age <span class="token operator">+</span> <span class="token number">1</span> cat<span class="token punctuation">(</span><span class="token string">"Next year, you'll be"</span><span class="token punctuation">,</span> next_age<span class="token punctuation">,</span> <span class="token string">"\n"</span><span class="token punctuation">)</span> |
Part 2: A Simple Interactive Program
Let’s build a small, complete program that uses both input and output.
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<span class="token comment"># A simple interactive calculator</span> <span class="token comment"># Get input from the user</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Welcome to the Simple Calculator!"</span><span class="token punctuation">)</span> num1 <span class="token operator">=</span> <span class="token builtin">float</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Enter the first number: "</span><span class="token punctuation">)</span><span class="token punctuation">)</span> num2 <span class="token operator">=</span> <span class="token builtin">float</span><span class="token punctuation">(</span><span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Enter the second number: "</span><span class="token punctuation">)</span><span class="token punctuation">)</span> operation <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Enter operation (+, -, *, /): "</span><span class="token punctuation">)</span> <span class="token comment"># Process the input</span> <span class="token keyword">if</span> operation <span class="token operator">==</span> <span class="token string">"+"</span><span class="token punctuation">:</span> result <span class="token operator">=</span> num1 <span class="token operator">+</span> num2 <span class="token keyword">elif</span> operation <span class="token operator">==</span> <span class="token string">"-"</span><span class="token punctuation">:</span> result <span class="token operator">=</span> num1 <span class="token operator">-</span> num2 <span class="token keyword">elif</span> operation <span class="token operator">==</span> <span class="token string">"*"</span><span class="token punctuation">:</span> result <span class="token operator">=</span> num1 <span class="token operator">*</span> num2 <span class="token keyword">elif</span> operation <span class="token operator">==</span> <span class="token string">"/"</span><span class="token punctuation">:</span> <span class="token keyword">if</span> num2 <span class="token operator">!=</span> <span class="token number">0</span><span class="token punctuation">:</span> result <span class="token operator">=</span> num1 <span class="token operator">/</span> num2 <span class="token keyword">else</span><span class="token punctuation">:</span> result <span class="token operator">=</span> <span class="token string">"Error: Division by zero!"</span> <span class="token keyword">else</span><span class="token punctuation">:</span> result <span class="token operator">=</span> <span class="token string">"Invalid operation"</span> <span class="token comment"># Output the result</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>num1<span class="token punctuation">}</span></span> <span class="token interpolation"><span class="token punctuation">{</span>operation<span class="token punctuation">}</span></span> <span class="token interpolation"><span class="token punctuation">{</span>num2<span class="token punctuation">}</span></span><span class="token string"> = </span><span class="token interpolation"><span class="token punctuation">{</span>result<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span> |
This program has all the hallmarks of I/O:
-
It outputs a welcome message.
-
It inputs three pieces of data from the user.
-
It outputs the final result.
Part 3: File Input and Output
A program that only interacts with the user through the console is limited. Real-world applications need to read from and write to files—to save data permanently, process large datasets, or share information with other programs.
Writing to a File (Output)
Python:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<span class="token comment"># Open a file for writing. 'w' means write mode.</span> <span class="token comment"># If the file doesn't exist, it's created. If it exists, its contents are overwritten!</span> <span class="token builtin">file</span> <span class="token operator">=</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"my_data.txt"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span> <span class="token comment"># Write some data to the file</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">"Hello, file!\n"</span><span class="token punctuation">)</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">"This is line two.\n"</span><span class="token punctuation">)</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"The answer is </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token number">42</span><span class="token punctuation">}</span></span><span class="token string">.\n"</span></span><span class="token punctuation">)</span> <span class="token comment"># Always close the file when you're done!</span> <span class="token builtin">file</span><span class="token punctuation">.</span>close<span class="token punctuation">(</span><span class="token punctuation">)</span> |
A better, safer way using a with statement (it automatically closes the file, even if errors occur):
|
0 1 2 3 4 5 6 7 8 9 10 |
<span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"my_data.txt"</span><span class="token punctuation">,</span> <span class="token string">"w"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">"Hello, file!\n"</span><span class="token punctuation">)</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">"This is line two.\n"</span><span class="token punctuation">)</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"The answer is </span><span class="token interpolation"><span class="token punctuation">{</span><span class="token number">42</span><span class="token punctuation">}</span></span><span class="token string">.\n"</span></span><span class="token punctuation">)</span> <span class="token comment"># File is automatically closed here</span> |
Reading from a File (Input)
Python:
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<span class="token comment"># Open the file for reading. 'r' means read mode.</span> <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"my_data.txt"</span><span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span> <span class="token comment"># Read the entire file content as one string</span> content <span class="token operator">=</span> <span class="token builtin">file</span><span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"--- Full File Content ---"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>content<span class="token punctuation">)</span> <span class="token comment"># Go back to the beginning of the file</span> <span class="token builtin">file</span><span class="token punctuation">.</span>seek<span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">)</span> <span class="token comment"># Read the file line by line</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"--- Reading Line by Line ---"</span><span class="token punctuation">)</span> <span class="token keyword">for</span> line <span class="token keyword">in</span> <span class="token builtin">file</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Line: </span><span class="token interpolation"><span class="token punctuation">{</span>line<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span> <span class="token comment"># .strip() removes the newline character</span> |
Appending to a File
If you want to add data to the end of an existing file without erasing what’s already there, use append mode ('a').
|
0 1 2 3 4 5 6 7 |
<span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span><span class="token string">"my_data.txt"</span><span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span><span class="token string">"This line is appended at the end.\n"</span><span class="token punctuation">)</span> |
Example: Simple Note-Taking App
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<span class="token comment"># A simple note-taking program</span> <span class="token keyword">def</span> <span class="token function">save_note</span><span class="token punctuation">(</span>filename<span class="token punctuation">)</span><span class="token punctuation">:</span> note <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Enter your note: "</span><span class="token punctuation">)</span> <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>filename<span class="token punctuation">,</span> <span class="token string">"a"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span> <span class="token builtin">file</span><span class="token punctuation">.</span>write<span class="token punctuation">(</span>note <span class="token operator">+</span> <span class="token string">"\n"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Note saved!"</span><span class="token punctuation">)</span> <span class="token keyword">def</span> <span class="token function">read_notes</span><span class="token punctuation">(</span>filename<span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">try</span><span class="token punctuation">:</span> <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>filename<span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span> notes <span class="token operator">=</span> <span class="token builtin">file</span><span class="token punctuation">.</span>readlines<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">if</span> notes<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n--- Your Notes ---"</span><span class="token punctuation">)</span> <span class="token keyword">for</span> i<span class="token punctuation">,</span> note <span class="token keyword">in</span> <span class="token builtin">enumerate</span><span class="token punctuation">(</span>notes<span class="token punctuation">,</span> <span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"</span><span class="token interpolation"><span class="token punctuation">{</span>i<span class="token punctuation">}</span></span><span class="token string">. </span><span class="token interpolation"><span class="token punctuation">{</span>note<span class="token punctuation">.</span>strip<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No notes found."</span><span class="token punctuation">)</span> <span class="token keyword">except</span> FileNotFoundError<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"No notes file found. Start by adding a note!"</span><span class="token punctuation">)</span> <span class="token keyword">def</span> <span class="token function">main</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">:</span> filename <span class="token operator">=</span> <span class="token string">"notes.txt"</span> <span class="token keyword">while</span> <span class="token boolean">True</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"\n--- Note Taker ---"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"1. Add a note"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"2. View all notes"</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"3. Quit"</span><span class="token punctuation">)</span> choice <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Choose an option: "</span><span class="token punctuation">)</span> <span class="token keyword">if</span> choice <span class="token operator">==</span> <span class="token string">"1"</span><span class="token punctuation">:</span> save_note<span class="token punctuation">(</span>filename<span class="token punctuation">)</span> <span class="token keyword">elif</span> choice <span class="token operator">==</span> <span class="token string">"2"</span><span class="token punctuation">:</span> read_notes<span class="token punctuation">(</span>filename<span class="token punctuation">)</span> <span class="token keyword">elif</span> choice <span class="token operator">==</span> <span class="token string">"3"</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Goodbye!"</span><span class="token punctuation">)</span> <span class="token keyword">break</span> <span class="token keyword">else</span><span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string">"Invalid choice. Please try again."</span><span class="token punctuation">)</span> <span class="token keyword">if</span> __name__ <span class="token operator">==</span> <span class="token string">"__main__"</span><span class="token punctuation">:</span> main<span class="token punctuation">(</span><span class="token punctuation">)</span> |
This program demonstrates:
-
Output to the console (menus, prompts)
-
Input from the user (keyboard)
-
Output to a file (saving notes)
-
Input from a file (reading notes)
Part 4: I/O in Different Languages
JavaScript (Node.js – for file I/O)
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<span class="token keyword">const</span> fs <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">'fs'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Writing to a file</span> fs<span class="token punctuation">.</span><span class="token function">writeFileSync</span><span class="token punctuation">(</span><span class="token string">'my_data.txt'</span><span class="token punctuation">,</span> <span class="token string">'Hello, file!\nThis is line two.\n'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Reading from a file</span> <span class="token keyword">const</span> data <span class="token operator">=</span> fs<span class="token punctuation">.</span><span class="token function">readFileSync</span><span class="token punctuation">(</span><span class="token string">'my_data.txt'</span><span class="token punctuation">,</span> <span class="token string">'utf8'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> console<span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>data<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// Appending to a file</span> fs<span class="token punctuation">.</span><span class="token function">appendFileSync</span><span class="token punctuation">(</span><span class="token string">'my_data.txt'</span><span class="token punctuation">,</span> <span class="token string">'This line is appended.\n'</span><span class="token punctuation">)</span><span class="token punctuation">;</span> |
R
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="token comment"># Writing to a file</span> writeLines<span class="token punctuation">(</span>c<span class="token punctuation">(</span><span class="token string">"Hello, file!"</span><span class="token punctuation">,</span> <span class="token string">"This is line two."</span><span class="token punctuation">,</span> paste<span class="token punctuation">(</span><span class="token string">"The answer is"</span><span class="token punctuation">,</span> <span class="token number">42</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">,</span> <span class="token string">"my_data.txt"</span><span class="token punctuation">)</span> <span class="token comment"># Reading from a file</span> content <span class="token operator"><-</span> readLines<span class="token punctuation">(</span><span class="token string">"my_data.txt"</span><span class="token punctuation">)</span> print<span class="token punctuation">(</span>content<span class="token punctuation">)</span> <span class="token comment"># Appending to a file</span> cat<span class="token punctuation">(</span><span class="token string">"This line is appended.\n"</span><span class="token punctuation">,</span> file <span class="token operator">=</span> <span class="token string">"my_data.txt"</span><span class="token punctuation">,</span> append <span class="token operator">=</span> <span class="token boolean">TRUE</span><span class="token punctuation">)</span> |
Part 5: Error Handling in I/O
I/O operations are particularly prone to errors. The file might not exist, you might not have permission to read it, the disk might be full, etc. Good programs anticipate and handle these errors gracefully.
|
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
filename <span class="token operator">=</span> <span class="token builtin">input</span><span class="token punctuation">(</span><span class="token string">"Enter the filename to read: "</span><span class="token punctuation">)</span> <span class="token keyword">try</span><span class="token punctuation">:</span> <span class="token keyword">with</span> <span class="token builtin">open</span><span class="token punctuation">(</span>filename<span class="token punctuation">,</span> <span class="token string">"r"</span><span class="token punctuation">)</span> <span class="token keyword">as</span> <span class="token builtin">file</span><span class="token punctuation">:</span> content <span class="token operator">=</span> <span class="token builtin">file</span><span class="token punctuation">.</span>read<span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token keyword">print</span><span class="token punctuation">(</span>content<span class="token punctuation">)</span> <span class="token keyword">except</span> FileNotFoundError<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Error: The file '</span><span class="token interpolation"><span class="token punctuation">{</span>filename<span class="token punctuation">}</span></span><span class="token string">' does not exist."</span></span><span class="token punctuation">)</span> <span class="token keyword">except</span> PermissionError<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"Error: You don't have permission to read '</span><span class="token interpolation"><span class="token punctuation">{</span>filename<span class="token punctuation">}</span></span><span class="token string">'."</span></span><span class="token punctuation">)</span> <span class="token keyword">except</span> Exception <span class="token keyword">as</span> e<span class="token punctuation">:</span> <span class="token keyword">print</span><span class="token punctuation">(</span><span class="token string-interpolation"><span class="token string">f"An unexpected error occurred: </span><span class="token interpolation"><span class="token punctuation">{</span>e<span class="token punctuation">}</span></span><span class="token string">"</span></span><span class="token punctuation">)</span> |
Part 6: Other Forms of I/O
While console and file I/O are the most common for beginners, programs interact with the world in many other ways:
-
Graphical User Interface (GUI) I/O: Buttons, text boxes, menus in a window.
-
Network I/O: Sending and receiving data over the internet (web browsing, APIs, etc.).
-
Database I/O: Reading from and writing to database systems.
-
Hardware I/O: Reading from sensors, sending signals to motors or lights.
-
Audio/Video I/O: Playing sounds, capturing from a microphone, displaying video.
All of these follow the same fundamental pattern: Input -> Process -> Output.
Summary: The Input/Output Philosophy
-
Input and Output (I/O) is how a program interacts with the outside world.
-
Standard input (usually the keyboard) and standard output (usually the screen) are the most basic forms.
-
print()(or equivalent) is used for output to the console. -
input()(or equivalent) is used for input from the keyboard. Remember that keyboard input is always text and may need to be converted. -
File I/O allows programs to read from and write to files on the disk, enabling permanent storage of data.
-
Always close files after using them. The
withstatement in Python handles this automatically. -
Error handling is crucial in I/O operations because they interact with unpredictable external resources.
-
I/O is the bridge between your code and the rest of the world. Without it, your programs would be isolated, unable to receive information or share their results.
Mastering I/O is what transforms your code from a simple calculation into a truly useful tool. It’s the difference between a pocket calculator and a full-fledged computer program.
