Flat Leon Works

アプリやゲームを作ってます。

【Python】個人的逆引きリファレンス

Pythonでの個人的によく書くコードを逆引きリファレンスとしてまとめておこうと思います。(随時更新)

注意:

  • Python2.7を対象としてます
  • Pythonに詳しいわけではないので変な書き方をしているかもしれません
  • 動作確認してません

ファイル

ファイルの存在チェック : os.path.exists( path )

import os.path
if os.path.exists( path ):
    pass

ドキュメント :
os.path.exists

ファイル読み込み

import os.path
if os.path.exists( path ):
    fileData = open( path, 'r' ).read()

もしくは

import os.path
import codecs
if os.path.exists( path ):
    fileData = codecs.open( path, 'r', 'utf_8' ).read()

ドキュメント :
open
codecs.open

ファイル書き込み

openFile = open( outputFile, 'w' )
openFile.write( writeData )
openFile.close()

もしくは

import codecs
openFile = codecs.open( outputFile, 'w', 'utf_8' )
openFile.write( writeData )
openFile.close()

ドキュメント :
file.write

ファイル削除 : os.remove( path )

import os
os.remove( path )

ドキュメント :
os.remove

ファイルコピー : shutil.copy2( src, dst )

import shutil
shutil.copy2( src, dst )
shutil.copy( src, dst ) # メタデータ(ファイル作成日など)をコピーしたくない場合はこっちを使う

ドキュメント :
shutil.copy2 shutil.copy

ファイル名変更 : os.rename( src, dst )

import os
os.rename( src, dst )

ドキュメント :
os.rename

ディレクト

ディレクトリ作成 : os.mkdir( path )

import os
os.mkdir( path )

ドキュメント :
os.mkdir

ディレクトリ作成( 中間ディレクトリも作成 ) : os.makedirs( path )

import os
os.makedirs( path )

ドキュメント :
os.makedirs

ディレクトリ削除 : shutil.rmtree( path )

import shutil
shutil.rmtree( path )

ドキュメント :
shutil.rmtree

カレントディレクトリの取得 : os.getcwd()

import os
os.getcwd()

ドキュメント :
os.getcwd

カレントディレクトリの変更 : os.chdir( path )

import os
os.chdir( path )

ドキュメント :
os.chdir

パス操作

パスをつなげる : os.path.join( 'aaa', 'bbb' )

基本的に普通に文字列の+でも問題ないけど、os.path.joinの方が少しだけうまくやってくれる

import os.path
os.path.join( 'aaa', 'bbb' )  # aaa/bbb
os.path.join( 'aaa/', 'bbb' ) # aaa/bbb

ドキュメント :
os.path.join

ファイルパスから絶対パスを取得する : os.path.abspath( path )

import os.path
os.path.abspath( path )

ドキュメント :
os.path.abspath

ファイルパスからファイル名(拡張子付き)を取得する : os.path.basename( path )

import os.path
os.path.basename( path )

ドキュメント :
os.path.basename

ファイルパスからディレクトリ名を取得する

import os.path
dirName = ''
if os.path.isdir( path ):
    dirName = os.path.basename( path )
else:
    dirName = os.path.basename( os.path.dirname( path ) )

ファイルパスからディレクトリパスを取得する : os.path.dirname( path )

import os.path
os.path.dirname( path ) # pathはファイルパスを想定

ドキュメント :
os.path.dirname

ファイルパスから拡張子を取得する : os.path.splitext( path )[1]

import os.path
os.path.splitext( path )[1] # `.txt`など

ドキュメント :
os.path.splitext

ファイルパスがディレクトリを指しているかどうかを取得する : os.path.isdir( path )

import os.path
os.path.isdir( path )

ドキュメント :
os.path.isdir

正規表現

正規表現で検索

import re
     
p = re.compile('.*\[(.*)\].*')
m = re.match( p, 'aiueo[hahaha]' )
print( m.group( 1 ) ) # hahaha

ドキュメント :
正規表現 HOWTO

正規表現で検索して置換

import re
     
# subで置換する方法
p = re.compile('\[(.*)\]')
print( re.sub( p, 'ehehe', '123[ohoho]456' ) ) # 123ehehe456

# splitで分割したものを操作し結合(join)する方法
p = re.compile('\[(.*)\]')
mlist = re.split( p, '123[ohoho]456' )
mlist[1] = '___'
print( ''.join( mlist ) ) # 123___456

ドキュメント :
正規表現 HOWTO

外部コマンドを実行 : subprocess.call( commandList )

import subprocess
subprocess.call( commandList )

ドキュメント :
subprocess.call

外部コマンドを実行(標準出力は表示しない)

外部コマンドの標準出力を表示しないようにしつつ、標準出力の内容を取得できる

p = subprocess.Popen( commandList, stdout=subprocess.PIPE )
(stdoutStr, stderrStr) = p.communicate()

ドキュメント :
subprocess.Popen

環境変数の取得 : os.environ['PATH']

import os
os.environ['PATH']

ドキュメント :
os.environ

書式を利用する

"""
#include <stdio.h>
int main(){{
    printf( "{message}" );
    return 0;
}}
""".format( message='aaa' )

ドキュメント :
書式指定文字列の文法

デバッグ(pdb)

デバッガ付きで実行する : python -m pdb ファイル名.py

スクリプトの実行時に、pythonへの引数として-m pdbを指定するとデバッガ付きの実行になります。

python -m pdb ファイル名.py

ドキュメント :
pdb

ソースコードブレークポイントを記述する : import pdb; pdb.set_trace()

ソースコードの任意の場所でブレークポイントでプログラムを止めたい場合、pdb.set_trace()を呼びます。デバッガ付きの実行でなくても、呼ばれたタイミングでデバッガが起動します。

ドキュメント :
pdb.set_trace

デバッガコマンド(pdb)

コマンド(省略形)引数説明
help(h)コマンド名引数なし : 利用できるコマンドの一覧を表示
引数あり : 引数で指定されたコマンドのヘルプを表示
next(n)ステップ実行(ステップオーバー)
step(s)ステップ実行(ステップイン)
return(r)ステップ実行(ステップアウト)
continue(c)再開
!文(Pythonコード)Pythonコード(文)を実行。コード先頭の単語がデバッガコマンドと被らない場合、`!`は省略可能
p式(Pythonコード)Pythonコード(式)を評価し、結果を出力する
quit(q)デバッガ終了。プログラムは中断される

ドキュメント :
デバッガコマンド