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 :)

Top comments (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

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