basics of file handling in python
Tags: codenewbie, python, computerscience, datascience
Published: 2020-11-04 10:12:10

>The [original article](https://kalebujordan.dev/file-handling-in-python/) can be found at [kalebujordan.dev](https://kalebujordan.dev/file-handling-in-python/)
Hi guys

In this article you’re going to learn how to work with files in python, you gonna learn various techniques on how open, **read**, **manipulate**, and **save** files in python.

Once you finish this article you will be in a good position of **handling files** in python so I suggest you read this to the end.

### Getting started
Working with files in python is straightforward, you can **open** files and **read** it in just **one** line of code.

For instance, let’s try reading **quotes.tx**t from a file which contains quotes as shown below;

```quotes.txt
True humility is not thinking less of yourself; it is thinking of yourself less.
I believe in Christianity as I believe that the sun has risen: not only because I see it, but because by it I see everything else.
You are never too old to set another goal or to dream a new dream.
```

- Reading from file

```python
>>> data = open('quotes.txt').read()
>>> print(data)
True humility is not thinking less of yourself; it is thinking of yourself less.
I believe in Christianity as I believe that the sun has risen: not only because I see it, but because by it I see everything else.
You are never too old to set another goal or to dream a new dream.
```

We used the **open ()** function to *read* a file in python in just one line of code.

### Diving into the basics 


- Modes of opening files in Python

You can open a file in python in different modes such as *reading mode*, *writing mode*, *appending mode*, *binary mode*, and etc.

**By default**, python **opens** the files in **reading mode** thus why in the example above we didn’t specify the mode but it doesn’t throw any error.

We use the following abbreviation to specify the mode;

- r -> for opening file in reading mode
- w ->for opening file in writing mode
- a -> for opening file in appending mode
- r+ ->for opening file in reading and writing mode
- w+ ->for opening file in writing and reading mode
- rb -> for reading in binary mode
- wb -> for writing in binary mode

### Reading files in python (reading mode)

You should use this mode when you're opening a file with the intention to read its content only since once you open a file in reading mode, it restricts you from making any changes to it.

To open a file in reading mode you just specify the path to the file plus the reading mode which *r* just as shown below;

```python
file = open('quotes.txt', 'r')

data = file.read()

print(data)
```
When you run the above code it will print the same result as the one we have seen above.

When opening a file you use the **open ()** builtin function it creates a **file object** with different methods that you can use to **manipulate** the file which can be viewed by the *dir()*.

```python
>>> dir(file)
.................
'buffer', 'close', 'closed', 'detach', 'encoding', 'errors',
'fileno', 'flush', 'isatty', 'line_buffering', 'mode', 'name',
'newlines', 'read', 'readable', 'readline', 'readlines', 'seek',
'seekable', 'tell', 'truncate', 'writable', 'write', 'writelines'
```

There is a way to read the **entire file** and also **line by line**, for instance, let’s try reading line by line and after each line, we print a line of stars.

### Reading by line by line

```python
>>> file = open('quotes.txt', 'r')
>>> for line in file:
...     print(line)
...     print('***********************************')
... 
True humility is not thinking less of yourself; it is thinking of yourself less.
​
***********************************
I believe in Christianity as I believe that the sun has risen: not only because I see it, but because by it I see everything else.
​
***********************************
You are never too old to set another goal or to dream a new dream.
***********************************
```

### Reading a specific line
you can also a specific line you need, for instance, Let’s try reading the only seconds from our quotes.txt

- Note :
Index starts with 0, from the bottom of the file to the top of the file

```python
>>> file = open('quotes.txt', 'r')
>>> second_line = file.readlines(1)[0]
>>> print(second_line)
I believe in Christianity as I believe that the sun has risen not only because I see it, but because by it I see everything else.
```

- Note :
When you open a file in Python you need to close it once you finish manipulating with it because not closing it may make it inaccessible to other programs.

Therefore to prevent that you’re advised to open a file using a **with statement**, which will automatically close the file when the block code finished running.

- Example of Usage

```python
>>> with open('quotes.txt', 'r') as file:
...     line = file.readline()
...     print(line)
... 
True humility is not thinking less of yourself; it is thinking of yourself less.
```

### Working with writing mode

To open a file in writing mode you need to use the abbreviation of **w** in reading mode.

We normally use mode when a new file to write information into because if you use this mode to open an existing file, it will replace the existing file content with the one you just wrote

For instance Let’s open a new file called numbers and then write a few numbers into:

- Example of Usage :

```python
>>> with open('numbers.txt', 'w') as file:
...     for number in range(10):
...             file.write(str(number))
... 
```

If you open your **number.txt**  you find **0123456789** is written to it.

### Working with appending mode

**Appending mode** is used when we want to append new information to an existing file, to open a file in appending mode use **a** on the file mode.

For instance, Let’s add a new quote to our **quotes.txt**

- Example of Usage 

```python
>>> with open('quotes.txt', 'a') as file:
...     new_quote = '\nThe world is tragedy to tho who feel'
...     file.write(new_quote)
... 
36
----------reading the file again---------------------
>>> lastline = open('quotes.txt').readlines()[-1]
>>> print(lastline)
The world is a tragedy to tho who feel
```

As you can in appending mode the quote we just added just saved to our file revealed when we try to open it again.

*Follow me on [Twitter](https://twitter.com/j_kalebu)

I recommend also reading this;

- [Learn how to interact with OS using Python](https://kalebujordan.dev/basics-of-python-os-module/)
- [An introductory guide to list comprehension in Python](https://kalebujordan.dev/guide-to-list-comprehension-in-python/)
- [When Decimal is better than float](https://kalebujordan.dev/when-decimal-is-better-than-float-python/)

In case of any suggestion or comment, drop it in the comment box and I will get back to you ASAP.