ファイル名操作やコマンド実行など(2018.5.4)
os, globでファイル名を操作
os.path - 共通のパス名操作を参照
ファイル名の操作
- dir,file = os.path.split(path): dirとファイル名を分離
- dir = os.path.dirname(path): splitの第一返値
- file = os.path.basename(path): splitの第二返値
- root,ext = os.path.splitext(path): 拡張子を分離
- drive,tail = os.path.splitdrive(path): ドライブ名を分離
- os.path.join(path, *paths): OS指定の区切り文字を使って結合
ファイル名の正規化・展開
- curdir = os.getcwd()
- homedir = os.path.expanduser(path): ’/‘や’user’を展開
- os.path.expandvars(path): $name, ${name}を展開
- npath = os.path.normcase(path): 大文字と小文字の区別のないOSでは小文字に変換・Windowsでは区切り文字をバックスラッシュに変換
- npath = os.path.normpath(path): 相対パスや絶対パスが混在している冗長なpath名を正規化
- rel = os.path.relpath(path, start=os.curdir): 現在のディレクトリからの相対パス
ファイルの確認・ディレクトリ操作
- os.chdir(path)
- os.mkdir(path)
- os.remove(path)
- shutil.rmtree(path)
- os.listdir(path)
- glob.glob(正規表現): 正規表現で検索
- os.path.exists(path): pathが実在すればTrue
- os.path.lexists(path): 壊れたシンボリックリンクでもTrue
- os.path.getmtime(path): 最後の更新時刻(存在しないとOSErr)
- os.path.getsize(path)
- os.path.isfile(path)
- os.path.isdir(path)
- os.path.islink(path)
- os.path.ismount(path)
- os.path.samefile(path1, path2)
- os.path.sameopenfile(fp1, fp2)
- os.path.supports_unicode_filenames
外部コマンドの実行
- os.system(‘ls -la’)
- commands.getoutput(“ls -la”)
- subprocess.Popen()
- subprocess.run()
- subprocess.call()
- subprocess.check_output()
- subprocess.check_call()
OSのチェック
- os.name
- os.cpu_count()
- multiprocessing.cpu_count()
- platform.machine()
- platform.node()
- platform.processor()
- platform.platform()
- platform.system()
- platform.version()
- platform.release()
- platform.uname()
- platform.java_ver()
- platform.mac_ver()
- platform.win32_ver()
- platform.dist()
- platform.linux_distribution()
- platform.libc_ver()
- platform.python_build()
- platform.python_compiler()
- platform.python_branch()
- platform.python_implementation()
- platform.python_revision()
- platform.python_version()
- platform.pyton_version_tuple()
日本語の文字コード変換
- code_stdin = sys.stdin.encoding
- code_stdout = sys.stdout.encoding
- sys.stdin = codecs.getreader(‘euc_jp’)(sys.stdin)
- sys.stdout = codecs.getwriter(‘utf_8’)(sys.stdout)
- fp_in = codecs.open(sjis_fname, ‘r’, ‘shift_jis’)
- fp_out = codecs.open(utf8_fname, ‘w’, ‘utf-8’)
サンプルコード(作業中)
参考