22.file handling
The key function for working with files in Python is the open()
function.
The open()
function takes two parameters; filename, and mode.
There are four different methods (modes) for opening a file:
- "r" - Read - Default value
Opens a file for reading, error if the file does not exist. - "a" - Append
Opens a file for appending, creates the file if it does not exist. - "w" - Write
Opens a file for writing, creates the file if it does not exist. - "x" - Create
Creates the specified file, returns an error if the file exists
In addition to these, we can specify if the file should be handled as binary or text mode.
- "t" - Text - Default value
- "b" - Binary - Binary mode
To open a file for reading
f = open("test.txt")
or
f = open("demofile.txt", "r")
or
f = open("demofile.txt", "rt")
Read the File
The open() function returns a file object, which has a read() method for reading the content of the file.
Suppose I have file test.txt with the below text
test.txt
This is a Python class.
This file is for testing purpose.
Example
f = open("test.txt", "r")
print(f.read())
Output:
This is a Python class.
This file is for testing purpose.
If the file is available in the different location, we need to specify the path.
Example
f = open("D:\\myfiles\test.txt", "r")
print(f.read())
Read only parts of the File
By default read() method returns the whole text, but we can also specify how many characters we want to return.
Example
f = open("test.txt", "r")
print(f.read(5))
Output:
This
Read Lines
We can return one line by using readline() method.
Example
f = open("test.txt", "r")
print(f.readline())
Output:
This is a Python class.
To read multiple lines, we need to call readline() method multiple times.
Example
f = open("test.txt", "r")
print(f.readline())
print(f.readline())
Output:
This is a Python class.
This file is for testing purpose.
By looping through the lines of the file, we can read the whole file, line by line.
Example
f = open("test.txt", "r")
for x in f:
print(x)
Output:
This is a Python class.
This file is for testing purpose.
Close the File.
We need to close the file, when we are done using the file.
Closing the file
f = open("test.txt", "r")
print(f.readline())
f.close()
Output:
This is a Python class
Write to an Existing File
In order to write to an existing File, we need to mention "a" (to append) or "w" (to overwrite) as a parameter to the open() function.
Example
f = open("test.txt", "a")
f.write("\nNow the file has more content!")
f.close()
#open and read the file after the appending:
f = open("test.txt", "r")
print(f.read())
Output:
This is a Python class.
This file is for testing purpose.
Now the file has more content!
"w" parameter will overwrite the whole content of the file
Example
f = open("test.txt", "w")
f.write("Woops! I have deleted the content!")
f.close()
#open and read the file after the appending:
f = open("test.txt", "r")
print(f.read())
Woops! I have deleted the content!
Create a New File
In order to create a file, we need to add "x" (to create) or "a" (to create, if the file does not exist) or "w" (to create, if the file does not exist).
Example
f = open("test1.txt", "x")
Delete a File
To delete a file, we must import the OS module, and run its os.remove() function.
Example
import os
os.remove("test1.txt")
If the file does not exists, os.remove() will throw an error.
Check if File exist
To avoid getting an error, we can check if the file exists before we try to delete it
Example
import os
if os.path.exists("test.txt"):
os.remove("test.txt")
else:
print("The file does not exist")
Delete Folder
To delete an entire folder, use the os.rmdir() method.
Example
import os
os.rmdir("myfolder")
This removes entire folder 'myfolder'