Encode and decode uuencode files using Python

The uuencode module in Python provides functions to encode and decode files using the Unix uuencoding format. This encoding method converts binary data into ASCII text, making it safe for transmission over text-based protocols.

Understanding Uuencoding

Uuencoding (Unix-to-Unix encoding) transforms binary files into printable ASCII characters. The encoded output includes a header with file permissions and name, followed by encoded data lines.

Encoding a File

The uu.encode() function converts a binary file into uuencoded format ?

Syntax

uu.encode(in_file, out_file, name=None, mode=None)

Example

import uu
import io

# Create a sample text file to encode
with open('sample.txt', 'w') as f:
    f.write('Hello, this is a test file for uuencoding!')

# Encode the file
uu.encode('sample.txt', 'encoded_sample.txt')

# Read and display the encoded content
with open('encoded_sample.txt', 'r') as f:
    encoded_content = f.read()
    print("Encoded content:")
    print(encoded_content[:200] + "..." if len(encoded_content) > 200 else encoded_content)
Encoded content:
begin 644 sample.txt
M2&5L;&\@=&AI<R!I<R!A('1E<W0@9FEL92!F;W(@=75E;F-O9&EN9RD*
`
end

Decoding a File

The uu.decode() function converts uuencoded data back to its original binary format ?

Syntax

uu.decode(in_file, out_file=None, mode=None, quiet=False)

Example

import uu

# Decode the previously encoded file
uu.decode('encoded_sample.txt', 'decoded_sample.txt')

# Read and verify the decoded content
with open('decoded_sample.txt', 'r') as f:
    decoded_content = f.read()
    print("Decoded content:")
    print(decoded_content)
Decoded content:
Hello, this is a test file for uuencoding!

Working with File Objects

You can also encode and decode using file objects instead of file paths ?

import uu
import io

# Create sample data
data = b"Binary data: \x00\x01\x02\x03\xff\xfe"

# Encode using StringIO
input_file = io.BytesIO(data)
output_buffer = io.StringIO()

uu.encode(input_file, output_buffer, name='binary_data.bin')

# Get encoded result
encoded_data = output_buffer.getvalue()
print("Encoded data:")
print(encoded_data)

# Decode back
encoded_buffer = io.StringIO(encoded_data)
decoded_buffer = io.BytesIO()

uu.decode(encoded_buffer, decoded_buffer)
decoded_data = decoded_buffer.getvalue()

print("Original data:", data)
print("Decoded data:", decoded_data)
print("Match:", data == decoded_data)
Encoded data:
begin 644 binary_data.bin
&````@_[]
`
end

Original data: b'Binary data: \x00\x01\x02\x03\xff\xfe'
Decoded data: b'Binary data: \x00\x01\x02\x03\xff\xfe'
Match: True

Key Points

Function Purpose Input Output
uu.encode() Convert binary to ASCII Binary file Uuencoded text
uu.decode() Convert ASCII back to binary Uuencoded text Original binary file

Common Use Cases

Uuencoding is commonly used for:

  • Email attachments: Sending binary files through text-based email systems
  • Newsgroup posts: Sharing files in text-only forums
  • Legacy systems: Working with older Unix systems that require uuencoded data

Conclusion

The uu module provides simple encoding and decoding functions for converting binary data to ASCII format. Use uu.encode() to convert files to uuencoded format and uu.decode() to restore them to their original form.

Updated on: 2026-03-15T18:32:21+05:30

2K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements