リンク

2016年3月24日木曜日

PythonでExcelファイルを読み込む

Pythonで既存のExcelファイルを読み込む方法をご紹介します。

Excelファイルを読み込むには「xlrd」モジュールが便利です。
# モジュールのインポート
import xlrd

# Excelファイルを開く
book  =xlrd.open_workbook('test.xlsx')

# シート数を取得する
book.nsheets

# 全てのシート名を取得する
book.sheet_names()

# インデックス番号で指定したシートに接続する
get_sheet = book.sheet_by_index(1)

# インデックス番号で指定したシート名を取得する
book.sheet_by_index(1).name

# 接続したシートで使用されている列数・行数を取得する
get_sheet.ncols # 列数
get_sheet.nrows # 行数

# 指定セルの値を取得する
get_sheet.cell(0, 0).value
##  [参考] セルの座標は(縦、横)で指定し、共に0から始まる。
##        セルA1は(0, 0)となり、セルD5は(4, 3)となる。

# 指定列・指定行の値を全て取得する
get_sheet.col_values(0) # 列
get_sheet.row_values(0) # 行

2016年3月19日土曜日

pythonでzipファイルを作成する

Pythonでは簡単にzipファイルを作成することができます。
今回はその方法について、できるだけわかりやすくご紹介したいと思います。

zipファイルを作成するには標準モジュールの「zipfile」モジュールを使用します。

それではサンプルを記述します。
# -*- coding:utf-8

import zipfile

# オブジェクトの作成
newfile = zipfile.Zipfile(r"C:\Python\new.zip", "w", zipfile.ZIP_DEFLATED)

# zipファイルに各ファイルを追加する
newfile.write(r"C:\test\aaa.txt")
newfile.write(r"C:\test\bbb.xml")
newfile.write(r"C:\test\ccc.pdf")

# オブジェクトを閉じる
newfile.close()
<解説>
# オブジェクトの作成
newfile = zipfile.ZipFile(r"C:\Python\new.zip", "w", zipfile.ZIP_DEFLATED)
この記述で、新しいzipファイルを作成します。
この時点では、中身は空の状態です。
また、指定したパスの中間のディレクトリが存在しない場合はエラーとなります。

ZipFileクラスの引数は次のようになっています。
zipfile.ZipFile(第一引数第二引数, 第三引数)

 第一引数 … 作成するzipファイルのパスを指定します。
 第二引数 … 読み書きモードを指定します。
         "r" … 既存ファイルの読み込み
         "w" … 新しいファイルへの書き込み
         "a" … 既存ファイルへの追記
 第三引数 … 圧縮有無の指定。
         "ZIP_STORED" … 圧縮なし
         "ZIP_DEFLATED" … 圧縮あり

※参考
第三引数の圧縮についてですが、実際にテストしたところ、次の違いがありました。

"ZIP_STORED"の時 … 1848バイト
"ZIP_DEFLATED"の時 … 736バイト

# zipファイルに各ファイルを追加する
newfile.write(r"C:\test\aaa.txt")
この記述で、空だったzipファイルにファイルを追加しています。
for文等を使って、繰り返し追加することも可能です。

# オブジェクトを閉じる
newfile.close()
追加が終わったら、最後にzipファイルを閉じます。

==================================================================
環 境:Python 2.7.9  / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります
==================================================================

[python] osモジュールまとめ


pythonを使う上で、よく使用するモジュールのひとつである「osモジュール」の中から、特に使用頻度の高いであろうものを厳選しました!
# モジュールのインポート
import os

# カレントディレクトリを取得する
os.getcwd()

# カレントディレクトリを移動する
os.chdir(r'C:\python')

# 指定したパス上の項目を表示する
os.listdir(r'C:\python')
##  ワイルドカードは使用できない。ワイルドカードを使用したい場合はglobモジュールを使用すると良い。

# フォルダを作る その1
os.mkdir(r"C:\python\hoge\NewFolder")
##  末端のフォルダを作成するまでの、中間のフォルダが存在しない場合はエラーとなり、フォルダは作成されない。 

# フォルダを作る その2
os.makedirs(r"C:\python\hoge\NewFolder")
##  末端のフォルダを作成するまでの、中間のフォルダが存在しない場合は新たに作成し、指定通りのパスでフォルダを作成する。

# ファイルを削除する
os.remove(r"C:\python\hoge\NewFolder\test.txt")
##  フォルダが指定された場合はエラーとなる。

# フォルダを削除する
os.rmdir(r"C:\python\hoge\NewFolder")
##  空のフォルダのみ削除する。空ではないフォルダを削除する場合(再帰的に削除する場合)は、shutilモジュールを使用する。

# リネームする(フォルダ・ファイルの区別なし)
os.rename(r"C:\python\hoge\NewFolder\test.txt", "New_Name.txt")
##  引数は(現在の名前, 新しい名前)の順で記述する。

# リネームしつつ、指定の場所に移動する
os.renames(r"C:\python\hoge\NewFolder\test.txt", r"C:\Users\user\Desktop\NewName.txt")
##  引数は(現在の名前, 新しい名前)の順で記述する。

# コマンドプロンプトのコマンドを使用する
os.system("dir")
##  dirはコマンドプロンプトで「カレントディレクトの内容を表示する」コマンド。

# PowerShellのコマンドレットを使用する
os.system("PowerShell Get-ChildItem")
##  Get-ChildItemはPowerShellで「カレントディレクトの内容を表示する」コマンドレット。

# Windowsユーザー名を取得する
os.environ.get("username")

# パスからファイル名のみを取得する
os.path.basename(r"C:\python\hoge\NewFolder\test.txt")
'test.txt'

# 存在を確認する その1
os.path.exists(r"C:\python\hoge")
##  ファイル・フォルダどちらでも使用可能。

# 存在を確認する その2
os.path.isdir(r"C:\python\hoge")
##  フォルダ限定。

# 存在を確認する その3
os.path.isfile(r"C:\python\hoge\test.txt")
##  ファイル限定。

# パスから拡張子のみを取得する
a = os.path.splitext(r"C:\python\hoge\test.txt")
a[1]
'.txt'
##  os.path.splitextの実行結果はタプルとなり、拡張子以前の部分と、拡張子の部分に分割される。a[0]とすれば、「C:\python\hoge\test」が返る。
==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります
==================================================================

[python] マップの操作

# マップを作る
dic = {1:'a', 2:'b', 3:'c', 4:'d', 5:'e'}

# 空のマップを作る
dic = {}

# キーを指定して取り出す
# キーが「3」である要素の値を出力する
dic[3]
'c'

# 要素を追加する
# キーが「8」で値が「h」であるものを追加する
dic[8] = 'h'
dic
{1:'a', 2:'b', 3:'c', 4:'d', 5:'e', 8:'h'}

# キーが存在するかどうか確認する
# キーがマップ内に存在する場合はTrue
5 in dic
True

# キーがマップ内に存在しない場合はFalse
6 in dic
False

# 要素を削除する
# キーを指定して、要素を削除する。削除された値が出力される
dic.pop(2)
'b'
==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります
==================================================================

2016年3月8日火曜日

[python] リストの操作まとめ


# リストを作る
array = ['a', 'b', 'c', 'd', 'e']

# 空のリストを作る
array = []

# n番目の要素を取得する
array[3]
'd'

# リスト内で最後の要素を取得する
array[-1]
'e'

# 範囲を指定して要素を取得する
array[0:3]
['a', 'b', 'c']

# n番目の要素を置き換える
array[3] = 'm'
array
['a', 'b', 'c', 'm', 'e']

# 末尾に要素を追加する
array.append("z")
array
['a', 'b', 'c', 'd', 'e', 'z']

# 指定したインデックスの前に要素を追加する
array.insert(2, 'z')
array
['a', 'b', 'z', 'c', 'd', 'e']

# リストにリストを結合する
array += ['x', 'y']
array
['a', 'b', 'c', 'd', 'e', 'x', 'y']

# 指定の要素が含まれるか確認する
'b' in array
True

# n番目の要素を削除する
array.pop(1)
array
['a', 'c', 'd', 'e']

# リスト内で最後の要素を削除する
array.pop()
'e'

# 要素の数をカウント
len(array)
5

# リスト内を昇順で並べ替え
array.sort()

# リスト内を降順で並べ替え
array.reverse()

# 指定の値を持つ要素の数をカウント
array = ['a', 'b', 'c', 'a', 'd', 'e', 'a']
array.count('a')
3

# 重複している要素を削除する
array = ['a', 'b', 'c', 'a', 'd', 'e', 'a']
new = list(set(array))
new
['a', 'b', 'c', 'd', 'e']
==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります
==================================================================

2016年3月7日月曜日

[python] 文字列、数値の操作まとめ

# 小文字→大文字に変換
a = "aiueo"
a.upper()
AIUEO

# 大文字→小文字に変換
a = "AIUEO"
a.lower()
aiueo

# 頭文字のみ大文字に変換
a = "aiueo"
a.capitalize()
Aiueo

# 小文字→大文字に、大文字→小文字に変換
a = "aIuEo"
a.swapcase()
AiUeO

# 文字列を指定した文字で区切る
a = "abc-def"
a.split("-")
['abc', 'def']

# 指定した文字が含まれるか判定する その1
# 指定した文字が含まれる場合は、最初に該当するインデックス番号が返る。
# 含まれない場合はエラーが返る。
a = "aiueo"
a.index("u")
2

# 指定した文字が含まれるか判定する その2
# 指定した文字が含まれる場合は、最初に該当するインデックス番号が返る。
# 含まれない場合は「-1」が返る。
a = "aiueo"
a.find("u")
2

# 指定した文字が含まれるか判定する その3
# 指定した文字が含まれる場合は、最後に該当するインデックス番号が返る。
# 含まれない場合はエラーが返る。
a = "aiueo-aiueo"
a.rindex("u")
8

# 指定した文字が含まれるか判定する その4
# 指定した文字が含まれる場合は、最後に該当するインデックス番号が返る。
# 含まれない場合は「-1」が返る。
a = "aiueo-aiueo"
a.rfind("u")
8

# 文字列内の指定部分を置換する
a = "aiueo-aiueo"
a.replace("ueo-ai", "s-s")
'ais-sueo'

# 文字列の指定部分を抜き出す
a = "aiueo-aiueo"
a[2:8]
'ueo-ai'

# 文字列の先頭から指定部分までを抜き出す
a = "aiueo-aiueo"
a[:8]
'aiueo-ai'

# 文字列の末尾から指定部分までを抜き出す
a = "aiueo-aiueo"
a[5:]
'-aiueo'

# str文字列をunicode文字列に変換
a = "aiueo-aiueo"
type(a)
<type 'str'>
b = unicode(a, 'shift-jis', 'ignore')
type(b)
<type 'unicode'>
==================================================================
環 境:Python 2.7.9 / Windows7
==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります
==================================================================