DEV Community

Cover image for Understanding 11 Important Python File Handling Methods
Aya Bouchiha
Aya Bouchiha

Posted on

Understanding 11 Important Python File Handling Methods

Hi, I'm Aya Bouchiha, today, we'll talk about 11 important python file handling methods.

close

  • close(): helps you to close an opened file.
test_file = open('test.txt', 'r')
first_line = test_file.readline()
# do something...

test_file.close()
Enter fullscreen mode Exit fullscreen mode

There is another method to close a file, that works automaticly without using close method:

with open('test.txt', 'r') as test_file:
    first_line = test_file.readline()
    # do something

Enter fullscreen mode Exit fullscreen mode

readable

  • readable(): checks if a specified file is readable.
with open('test.txt', 'w') as test_file:
    print(test_file.readable()) # False
    print(test_file.readline()) # error

with open('test.txt', 'r') as test_file:
    print(test_file.readable()) # True
Enter fullscreen mode Exit fullscreen mode

read

  • read(size= -1): returns the given number of bytes (by default -1) from a specified file.

test.txt

Hello, I'm Aya Bouchiha
This is an Example
Aya Bouchiha
Test
Enter fullscreen mode Exit fullscreen mode

index.py

with open('test.txt', 'r') as test_file:

    print(test_file.read(28))
    # Hello, I'm Aya Bouchiha
    # This

    print(test_file.read())
    #  is an Example
    # Aya Bouchiha
    # Test

    print(test_file.read())
    # ""
Enter fullscreen mode Exit fullscreen mode

readline

  • readline(size=-1): used to read a given number of bytes (by default = -1) in a line from a specified file.

test.text:

Hello, I'm Aya Bouchiha
This is an Example
Aya Bouchiha
Test
Enter fullscreen mode Exit fullscreen mode

index.py:

with open('test.txt', 'r') as test_file:
    first_line = test_file.readline() 
    second_line = test_file.readline() 
    fname_from_third_line = test_file.readline(3)

    print(first_line) # Hello, I'm Aya Bouchiha
    print(second_line) # This is an Example
    print(fname_from_third_line) # Aya
Enter fullscreen mode Exit fullscreen mode

readlines

  • readlines(N = -1): returns all file lines as a list. N parameter is used to limit the number of lines returned. If the total number of bytes returned exceeds the specified number, no more lines are returned.

for more details:

user.txt:

Aya Bouchiha
developer.aya.b@gmail.com
https://t.me/AyaBouchiha
Enter fullscreen mode Exit fullscreen mode

index.py:

with open('user.txt', 'r') as user_file:
    # [
    #  "Aya Bouchiha\n",
    #  "developer.aya.b@gmail.com\n",
    #  "https://t.me/AyaBouchiha\n",
    # ]
    print(user_file.readlines())

    user_file.seek(0)

    print(user_file.readlines(3))
    # ["Aya Bouchiha\n"]
Enter fullscreen mode Exit fullscreen mode

seek, tell

  • seek(pos): helps you to specifiy the cursor's position, and gets the new one. more details

  • tell(): lets you get the file's current position.

test.text:

Hello, I'm Aya Bouchiha
This is an Example
Aya Bouchiha
Test
Enter fullscreen mode Exit fullscreen mode

index.py:

with open('test.txt', 'r') as test_file:
    print(test_file.tell()) # 0
    first_line = test_file.readline()  # Hello, I'm Aya Bouchiha
    current_position = test_file.seek(7) # "hello, " is ignored, len("hello, ") is 7
    print(current_position) # 7
    print(test_file.tell()) # 7
    print(test_file.read())
    # I'm Aya Bouchiha
    # This is an Example
    # Aya Bouchiha
    # Test
Enter fullscreen mode Exit fullscreen mode

writable

  • writable(): checks if the specified file is writable.
with open('test.txt', 'r') as test_file:
    print(test_file.readable()) # True
    print(test_file.writable()) # False

with open('test.txt', 'w+') as test_file:
    print(test_file.readable()) # True
    print(test_file.writable()) # True
Enter fullscreen mode Exit fullscreen mode

write

  • write(value): lets you write a given value in a specified file.

message.txt:

Enter fullscreen mode Exit fullscreen mode

index.py:

with open('message.txt', 'w') as message_file:
    message = 'Good morning!'
    message_file.write(message)
Enter fullscreen mode Exit fullscreen mode

message.txt:

Good morning!
Enter fullscreen mode Exit fullscreen mode

writelines

  • writelines(sequence): used to write a sequence of items in a specified file.more details

Example 1:

emails.txt:

Enter fullscreen mode Exit fullscreen mode

index.py:

emails = ["developer.aya.b@gmail.com\n", "john.doe@gmail.com",]
with open('emails.txt', 'w') as emails_file:
    emails_file.writelines(emails)
Enter fullscreen mode Exit fullscreen mode

emails.txt:

developer.aya.b@gmail.com
john.doe@gmail.com
Enter fullscreen mode Exit fullscreen mode

Example 2:

admins.txt:

Enter fullscreen mode Exit fullscreen mode

index.py:

admins = ["Aya Bouchiha\n", "John Doe\n", "Simon Spouf"]

with open('admins.txt', 'a+') as admins_file:

    print(admins_file.readable()) # True
    print(admins_file.writable()) # Trye

    admins_file.write("Hi, welcome to admins.txt\n")
    admins_file.write('admins are:\n')

    admins_file.writelines(admins)

    print(admins_file.tell()) # 75
    admins_file.seek(0)
    print(admins_file.read())
    # Hi, welcome to admins.txt
    # admins are:
    # Aya Bouchiha
    # John Doe
    # Simon Spouf
Enter fullscreen mode Exit fullscreen mode

admins.txt:

Hi, welcome to admins.txt
admins are:
Aya Bouchiha
John Doe
Simon Spouf
Enter fullscreen mode Exit fullscreen mode

truncate

  • truncate(size): lets you truncate the file size.

Example 1:

emails.txt:

developer.aya.b@gmail.com
john.doe@gmail.com
Enter fullscreen mode Exit fullscreen mode
with open('emails.txt', 'a+') as emails_file: 

    email_address = 'developer.aya.b@gmail.com'

    emails_file.truncate(len(email_address))

    emails_file.seek(0)

    # developer.aya.b@gmail.com
    print(emails_file.read())

Enter fullscreen mode Exit fullscreen mode

emails.txt:

developer.aya.b@gmail.com
Enter fullscreen mode Exit fullscreen mode

Example 2:

emails.txt:

Enter fullscreen mode Exit fullscreen mode

index.py:

with open('emails.txt', 'a+') as emails_file: 

    emails = [
        "developer.aya.b@gmail.com\n",
        "john.doe@gmail.com\n",
        "someone.d@gmail.com"
    ]

    emails_file.writelines(emails)

    emails_file.seek(0)

    # developer.aya.b@gmail.com
    print(emails_file.readline()) 

    emails_file.truncate(len("".join(emails[:2])))

    emails_file.seek(0)

    # developer.aya.b@gmail.com
    # john.doe@gmail.com
    print(emails_file.read())

    emails_file.seek(len(emails[0]))

    # size = cursor's position which is len(emails[0])
    emails_file.truncate() 

    # 26
    print(emails_file.tell()) 

    emails_file.seek(0)

    # developer.aya.b@gmail.com
    print(emails_file.read())
Enter fullscreen mode Exit fullscreen mode

emails.txt:

developer.aya.b@gmail.com

Enter fullscreen mode Exit fullscreen mode

Summary

  • close(): closes an opened file.
  • readable(): checks if a specified file is readable.
  • read(size= -1): returns the given number of bytes (by default -1) from a specified file.
  • readline(size=-1): reads a given number of bytes (by default = -1) in a line from a specified file.
  • readlines(N = -1): returns all file lines as a list.
  • seek(pos): specifiy the cursor's position, and returns the new one.
  • tell(): returns the file's current position.
  • writable(): checks if the specified file is writable.
  • write(value): writes a given value in a specified file.
  • writelines(sequence): writes a sequence of items in a specified file.
  • truncate(size): truncates the file size.

References & Useful Resources

Articles

Youtube Videos

Suggested Posts

To Contact Me:

email: developer.aya.b@gmail.com

telegram: Aya Bouchiha

Hope you enjoyed reading this post :)

Discussion (2)

Collapse
thumbone profile image
Bernd Wechner • Edited

Not a bad summary. But falls short decisively with lines like: returns the given number of bytes (by default -1) from a specified file.

And yes? What does reading -1 bytes mean? And moreover it's more commonly a number of characters not bytes (we are well and truly into the Unicode era, and Python 3 like it or not). So it's bytes when the file is opened in byte mode else it's characters (which can be one or more bytes), and -1 is just the simplest case of a negative number, any negative number asking read() to read the rest of the file. Which is sort of worth saying in a beginners guide (far from obvious).

The introduction to readable() and writable() is good though. very pleased to see it as these are buried a bit deeply in IOBase documentation and overlooked in the formal Python tutorial: docs.python.org/3/tutorial/inputou...

Collapse
ayabouchiha profile image
Aya Bouchiha Author

I appreciate a lot your feedback, I will try more writing good summaries.
Thank you very much 😊