Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのuuencodeモジュールでファイルをエンコード・デコードする方法

ファイル転送の際には、暗号化や圧縮、あるいは異なるOSやファイル読み込みプログラムでの処理に対応するなど、さまざまな理由からファイルのエンコード・デコードが必要になることがよくあります。Python標準ライブラリのuuモジュールを使えば、こうしたエンコードとデコードを簡単に行うことができます。

ファイルのエンコード

ここでは、以下の画像ファイルを使用して、エンコードを行い、その後デコードして元の画像を復元してみます。

Pythonのuuencodeモジュールでファイルをエンコード・デコードする方法

次のプログラムでは、encode関数を使って指定した画像をエンコードし、エンコード後のファイル内容を読み出して表示しています。

サンプルコード

import uu

infile = "E:\tp_logo.JPG"

uu.encode(infile, 'encoded_logo.JPG')
f = open("E:\TP\encoded_logo.JPG", 'r')
print(f.read())

上記のコードを実行すると、次のような結果が得られます。

実行結果

begin 666 tp_logo.JPG
M_]C_X 02D9)1@ ! 0$ D "0 #_X1"*17AI9@ 34T *@   @ ! $[ (
M ( (2H=I 0   ! (4IR= $   0 0<NH< < @,   /@
M <Z@   @                                
M ………….

このように、エンコードされたファイルには「begin」行で始まるuuencode形式のテキストデータが出力されます。バイナリ画像がASCII文字列に変換されているのが確認できます。

ファイルのデコード

続いて、モジュールのdecode関数を使用して、エンコードされたファイルを復号化し、「decoded_logo.JPG」という名前で新しい画像を作成します。デコードされた画像は元の画像と完全に一致していることがわかります。

サンプルコード

import uu
uu.decode('encoded_logo.JPG', 'decoded_logo.JPG')

上記のコードを実行すると、元の画像が復元されます。

実行結果

Pythonのuuencodeモジュールでファイルをエンコード・デコードする方法

まとめ

uuモジュールのencode関数は入力ファイルと出力ファイルのパスを引数に取り、バイナリデータをテキスト形式に変換します。逆にdecode関数は、エンコードされたテキストファイルから元のバイナリデータを復元します。なお、Python 3.11以降ではuuモジュールは非推奨となっているため、新規プロジェクトではbase64モジュールなどの利用も検討するとよいでしょう。

  1. Pythonで複数のファイル名を一括変更する方法【os.rename()活用】

    Python3では、rename()メソッドを使うことで、ファイルやディレクトリの名前を簡単に変更できます。このメソッドは標準ライブラリのosモジュールに含まれており、追加のインストールなしですぐに利用可能です。 os.rename() の基本構文 os.rename(src, dst) 各引数の意味は以下のとおりです。 src: 名前を変更したい元のファイル(またはディレクトリ)のパス dst: 変更後の新しい名前を含むパス それでは、複数の画像ファイルが入ったフォルダを例に、一括でファイル名を変更する方法を見ていきましょう。ここでは、次のような画像フォルダを使用します。 入力(変更前の

  2. MacでPython 3にアップグレードして使いこなす方法

    購入したばかりの新しいMacには、必要なソフトウェアの最新版がすべて入っていると思いがちですが、ユーザー向けアプリについては概ね正しくても、基盤となるフレームワークに関しては話が別です。安定版の最新リリースがPython 3.5であるにもかかわらず、新しいMacには今なおPython 2.7.10がプリインストールされています。バージョン間の差が大きく感じられるのはそのためです。ただし、新しいバージョンが必ずしも優れているとは限りません。Python 3はPython 2との後方互換性を持たず、多くの開発者は依然としてPython 2を使い続けているのです。 2to3を使うか、使わないか?