how to read a file in python
Tags: python, tutorial, newbie, devops
Published: 2021-01-18 02:26:43

### How to open and read file using python.
Some time we want to open another file with our python so as to get some data which my be needed in our codes. But before we move in to that 

#### What is file?
Before we explain how to handle files in Python, it’s important to understand what exactly a file is and how operating systems handle them.

In a simple words, a file is a contiguous set of bytes used to store data. This data is organized in a specific format and can be anything as simple as a text file or as complicated as a program executable. In the end, these byte files are then translated into binary 1 and 0 for easier processing by the computer.

#### Files are usually composed of three main parts:
* **Header:** this is the metadata about the contents of the  file (file name, )size, type, and so on)
* **Data:** contents of the file or everything written by the creator of the file
* **End of file (EOF):** special character that indicates the end of the file (e.g html,css,py,csv etc.).
 Now that we have understand what File is let's quickly go into the topic.

#### How to Open and Close File in Python
 When you want to work with a file, the first thing to do is to open it.The key function for working with files in Python is the **open()** function.

The `open()` function: this is one of python built in functios that takes two parameters; filename, and mode. it is used to open a file for use in python.

There are four different methods (modes) for opening a file:

**`"r"`** - Read -It is the Default value for open function mode.it Opens a specified file for reading and raise error if the file does not exist.

**`"a"`** - Append - it is used to open a file for appending i.e it is use to add more content to the file. it creates the file if it does not exist.

**`"w"`** - Write - it is use to open a file for writing, creates the file if it does not exist. Note: this mode will deleted all the content in the file before writing and start a new content if the file exist.

**`"x"`** - Create - Creates the specified file, returns an error if the file exists

In addition you can specify if the file should be handled as binary or text mode by the addition of the following to the mode

**`"t"`** - Text - Default value. Text mode

**`"b"`** - Binary - Binary mode (e.g. images)
Reading from files
Suppose we have a text file called example1.txt whose contents are shown below, and we want to open the file for reading and print what is in it.
example1.txt>>
```
Hi everyone.
This is a text file.
let's use it in python.
Bye!
```
Our code will be :
###Example1
```python
example1file=open('example1.txt') #Notice we don't need to write the mode as it is read at default
```
with the code above we just open a file for reading we can read it now and use the content in it.
what if we need to write into the file how will it look like ? well just do the same thing and specify the mode
###Example2
```python
example1file=open('example2.txt','w') # we just creat and open a new file for writing as example2 is not existing before.
```
the example above will open a new file for you you don't even need to `have example2.txt` in your folder but immediately you write the code above the file will be created although its content will be empty for now as we have not written anything yet. You can check it in your folder to confirm it. 
what if we had written `example1.txt` instead? well since i already have it in my folder before it will still be there but the content I showed in the beginging will be wiped off so I would have empty content in my `example1.txt` you too can check with any of your existing file that is not important to you.
let's see anothere example of special moded. let say we need to open image with the name `myimage.png` How dow we do with that? well it is simple we just add the binary mode to its mode. 
###Example3
```python
example1file=open('myimage.png','rb') # the 'r' is for reading while the b is to specify that it is birnary not text.
```
let's see last example on this with html file.
let say we have an html file name `mylist.html` containing the following content.
html>>
```html
<!DOCTYPE html>
<html>
<head>
<title>list</title>
</head>
<body>
<ol>
<li>this is number one on the list</li>
<li>this is the second number on the list</li>
</ol>
</body>
</html>
```
Now let's try to open it  with the following code
###Example4
```python
myHtml_file=open('mylist.html','a') # ready to append or accept additional content.
```
###Example5
```python
### Example2
myJson_file = open('your_json_file.json')# Your file must be in the same directory /folder of this your python file.
```
### Example6
```python
myCsv_file = open('your_csv_file.csv')# Your file must be in the same directory /folder of this your python file.
```

### Example7
```python
myExcel_file = open('your_Excel_file.xlsx')# Your file must be in the same directory /folder of this your python file.
```
so, I believe you have understand how to open any file either text,html,csv,xlsx,python or png etc. just use the same way and you are done. Also here you should able to specify the mode depending on what you are willing to do. 
### How to close file when done with the content.
 When you’re manipulating a file, there are two ways to close a file these are:
*  **Try-finally block Method:** This method is involve error handling you use 'try' to write all the codes to manipulate your data then finally will be the place to close the file. this method will automatically close the file even when encountering an error. Your code pattern look like below:
```python
    file = open('myText_file.txt')
    try:
    # Further file processing goes here
    finally:
    file.close()
```
    If you’re unfamiliar with what the try-finally block you can just remove the `try` and `finally` or just use second method.
*  **Statement Method:**
```python
with open('myText_file.txt') as myText_file: #this is the same thing as 
# myText_file=open('myText_file.txt')
    # Further file processing goes here
 ```
 In this second method there is no need of close() to be use again. when you code for manipulation is done the file is close automatically.
###read file in python
You already learn how to open file specific purpose, in which one of them is read. so let's see how we can read file and print them out in python.
To read file there are two method which can be use they are:

 **list comprehension** :this method is used to load the file line-by-line into as it is written in the file.
Using list comprehension we will have the content of the text file on our python as list with respect to the line in the text file.

###Example1
```python
AllContent = [line.strip() for line in open('example1.txt')]
print(AllContent)
```
Result>>
```
['Hi everyone.','This is a text file.','let's use it in python,Bye!]
```

###Example2.
```python
example1File=open('examp1.txt')
AllContent=[] #list of all content line by line
for line in example1File: # read each of the line
    AllContent.append(line)
print(AllContent)
example1File.close()
 ```
 Result>>
```
['Hi everyone.\n', 'This is a text file.\n', "let's use it in python.\n", 'Bye!']
```
###Example3.
```python
example1File=open('example1.txt')
for line in example1File: # read each of the line
    print(line)
example1File.close()
 ```
 Result>>
```
Hi everyone.

This is a text file.

let's use it in python.

Bye!
```

The three example above shows how list could be use to read file. example1 and example2 are very similar only that one will printed the newline(\n) with it while the other don't. the third example is a direct way of reading and printing file in python.
Note also the that the string method `strip` in example1 is used to remove any whitespace characters(\nd) from the beginning and end of a string. If we had not used it, each line would contain a newline character at the end of the line just like in example2. the same thing for example2 if we had written `append(line.strip())` instead of `append(line)` then we won't have the new line character printed.
Now let's take a look at the second method 
* **string Load**: This method loads the entire file into a string and can be easily printed. let take a look at some examples.

###Examples1:
```python
example1File= open('example1.txt').read()
print(example1File)
```
Result>>
```
Hi everyone.
This is a text file.
let's use it in python.
Bye!
```

###Example2
```python
mylistFile = open('mylist.html').read()
print(mylistFile)

```
Result>>
```
<!DOCTYPE html>
<html>
<head>
<title>list</title>
</head>
<body>
<ol>
<li>this is number one on the list</li>
<li>this is the second number on the list</li>
</ol>
</body>
</html>
```
all examples that we had been doing they are all in the same folder or directory as our python file but what if the file we want to open is in different directory? well just specify the directory and your code will be like.
```python
homeFile = open(r'C:\Users\alfa\youngscience\hello.txt').read()
print(homeFile)
```
```
Hello world!
how are you doing with your programming?
I hope you are getting it?
```
the same method used in the last example can work for others too. Note the `r` before the directory always write it so that your programs don't raise error.
I hope you learn something consider to follow so that you don't miss the next lesson. By God's grace in the next lesson we shall be dealing with how to write and append into a file. see you in the next lesson.