Python File truncate() Method



The Python File truncate() method truncates or shortens a file's size. In other words, this method removes or deletes the contents of a file, and replaces them with some garbage (or null) values to maintain the size. The size of this file is defaulted to the current position in it.

This method accepts an optional size argument where the file is truncated to (at most) that size. The default value of this argument is the current file position. However, if the size argument exceeds the current size of the file, the file is increased to that specified size by adding either undefined content to the file, or zeroes. The result becomes platform-dependent.

Note − The truncate() method would not work in case a file is opened in read-only mode.

Syntax

Following is the syntax for the Python File truncate() method −

fileObject.truncate(size)

Parameters

  • size − (Optional) The size at which a file is to be truncated.

Return Value

This method does not return any value.

Example

Consider a demo file "foo.txt" containing strings.

This is 1st line
This is 2nd line
This is 3rd line
This is 4th line
This is 5th line

The following example shows the usage of the Python File truncate() method.

# Open a file
fo = open("foo.txt", "w+")
print("Name of the file: ", fo.name)

# Assuming file has following 5 lines
# This is 1st line
# This is 2nd line
# This is 3rd line
# This is 4th line
# This is 5th line

line = fo.readline()
print("Read Line:", line)

# Now truncate remaining file.
fo.truncate()

# Try to read file now
line = fo.readline()
print("Read Line:", line)

# Close opened file
fo.close()

When we run above program, it produces following result −

Name of the file:  foo.txt
Read Line:
Read Line:

Example

If we pass the size argument to the method, the file's contents will be truncated but the size of the file will be equal to the argument passed.

The demo file "foo.txt" is of a size 138 bytes and the size argument is set to 50 bytes, the method deletes the existing content of the current file and fills the file with undefined content. Consequently, the size of the file is reduced to 50 bytes.

# Open a file
fo = open("foo.txt", "w+")
print("Name of the file: ", fo.name)

# Read the first line of the file
line = fo.readline()
print("Read Line:", line)

# Now truncate the file and maintain the size up to 50 bytes
fo.truncate(50)

# Try to read the file now
line = fo.readline()
print("Read Line:", line)

# Close opened file
fo.close()

On executing the program above, the output is displayed as given below and check the file size to observe the result.

Name of the file:  foo.txt
Read Line:
Read Line:

Example

But if the given size argument exceeds the file size, the contents in it are truncated as usual and the file is filled with undefined content or zeroes.

The demo file "foo.txt" is of a size 138 bytes and if the size argument is set to 200 bytes, the method fills the file with undefined content while maintaining the size of the file at 200 bytes.

# Open a file
fo = open("foo.txt", "w+")
print("Name of the file: ", fo.name)

# Read the first line of the file
line = fo.readline()
print("Read Line:", line)

# Now truncate the file and maintain the size up to 200 bytes
fo.truncate(200)

# Try to read the file now
line = fo.readline()
print("Read Line:", line)

# Close opened file
fo.close()

On executing the program above, the output is displayed as given below. To check the size of the file, go to the properties of this file.

Name of the file:  foo.txt
Read Line:
Read Line:

Example

This method does not work when the file is in reading modes (r or r+).

In this example, a file is opened in the reading mode (r+), the truncate method called on this file's object will not be effective and keeps the contents within it as they were before.

# Open a file
fo = open("foo.txt", "r+")
print("Name of the file: ", fo.name)

# Read the first line of the file
line = fo.readline()
print("Read Line:", line)

# Now truncate the file
fo.truncate()

# Try to read the file now
line = fo.readline()
print("Read Line:", line)

# Close opened file
fo.close()

On executing the program above, the output is displayed as follows −

Name of the file:  foo.txt
Read Line: This is 1st line

Read Line: This is 2nd line
python_file_methods.htm
Advertisements