Python」カテゴリーアーカイブ

プログラミング言語「Python」に関するカテゴリーです。

PythonでZipファイルへの圧縮と展開

Pythonでは標準ライブラリでZipファイルへの圧縮と展開ができます。

Zipファイルの作成

example.zipという名称のZipファイルを作成するサンプルです。
arcnameを指定すると別名でアーカイブできます。

>>> from zipfile import ZipFile
>>> z = ZipFile('example.zip', 'w')
>>> z.write('filename1.txt')
>>> z.write('filename2.txt', 'arcname.txt')
>>> z.close()

Zipファイルの展開

namelistでファイル名のリストを取得し、readでファイルのバイト列を取得します。

>>> import os
>>> z = ZipFile('example.zip', 'r')
>>> for f in z.namelist():
...   open(os.path.basename(f), 'w').write(z.read(f))
...
>>> z.close()

このサンプルではbasenameだけを使ってファイルを作成していますので、異なるディレクトリで同名のファイルが存在する場合は上書きされてしまいます。注意してください。

IPアドレスの取得方法

実行しているPCのIPアドレスの取得方法を調べてみました。

Windowsのコマンドプロンプト

> ipconfig

Windows IP 構成


Wireless LAN adapter ワイヤレス ネットワーク接続:

接続固有の DNS サフィックス . . . :
IPv4 アドレス . . . . . . . . . : 192.168.1.2
サブネット マスク. . . . . . . . : 255.255.255.0
デフォルト ゲートウェイ . . . . . : 192.168.1.1

Pythonのスクリプト

>>> import socket
>>> socket.gethostbyname(socket.gethostname())
'192.168.1.2'

サンプルでは192.168.1.2が取得したいIPアドレスになっています。

Pythonでファイルのアップロード

multipart/form-dataをPOSTしたい場合はMultipartPostHandlerを使うと簡単に送れて便利です。

import MultipartPostHandler, urllib2

opener = urllib2.build_opener(MultipartPostHandler.MultipartPostHandler)
params = { 'user': 'user', 'file': open('filename', 'rb') }
opener.open('http://example.com/upload/', params)