Paepoi » Python Tips » Python POSIX
Python POSIX
最終更新日 2019.03.31
標準入出力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/usr/bin/env python3 # std ss = input ( 'Your Name?: ' ) print ( 'Herro {} san' . format (ss)) # sys 版、画面更新と改行に注意 import sys sys.stdout.write( 'Your Name?: ' ) sys.stdout.flush() s = sys.stdin.readline().rstrip() sys.stdout.write( 'Herro {} san\n' . format (s)) # 改行防止 print ( 'aaa' , end = '') # sep にて結合文字を変更、標準は半角スペース print ( 'aaa' , 'bbb' , sep = ',' ) #=> aaa,bbb # リダイレクト with open ( 'test.txt' , 'w' ) as f: print ( 'てすと' , file = f) # {0} のエスケイプ print ( '{{0}} {0}' . format ( 'のエスケイプ' )) |
POSIX コマンド
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | #!/usr/bin/env python3 # posix という標準モジュールもありますが os と引数が同じ # os モジュールがほぼすべてラップしているようです import os import subprocess # ユーザーディレクトリ表示 # echo $HOME print (os.getenv( 'HOME' )) # カレントディレクトリの取得 # pwd print (os.getcwd()) # ディレクトリ作成 # mkdir __temp__ os.mkdir( '__temp__' ) # カレントディレクトリの移動 # cd __temp__ os.chdir( '__temp__' ) # リダイレクト # echo まどか > from.txt with open ( 'from.txt' , 'w' ) as f: f.write( 'まどか' ) # リダイレクト(追記) # echo \nほむら >> from.txt with open ( 'from.txt' , 'a' ) as f: f.write( '\nほむら' ) # パーミッションの変更、8 進数に注意 # chmod 666 from.txt os.chmod( 'from.txt' , 0o666 ) # シンボリックリンク作成 # ln -s from.txt link.txt os.symlink( 'from.txt' , 'link.txt' ) # コマンドの実行 # cp from.txt to.txt r = subprocess.run([ 'cp' , 'from.txt' , 'to.txt' ]) if r.returncode ! = 0 : print ( 'copy error' ) # ファイルの読み込み # cat to.txt with open ( 'to.txt' ) as f: print (f.read()) # カレントディレクトリのファイル一覧 # ls print ( ' ' .join(os.listdir())) # OS 情報、ホスト名 # uname -n r = os.uname() print (r.nodename) # OS 情報、(Linux|Darwin) # uname -s print (r.sysname) # 環境変数一覧 # env for key in os.environ.keys(): print ( '{0}={1}' . format (key, os.getenv(key))) |
端末入力とパイプ入力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #!/usr/bin/env python3 import sys, os if os.isatty( 0 ): # 通常起動、stdin が開いている print ( 'コンソール' ) else : # stdin がパイプで既に使われている # 行末に改行が含まれているので注意 print (sys.stdin.read().rstrip()) ''' output $ ./atty.py コンソール $ echo HOGE | ./atty.py HOGE ''' |
Ctrl+C で強制終了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | #!/usr/bin/env python3 # This allows Ctrl+C to exit the program import signal signal.signal(signal.SIGINT, signal.SIG_DFL) # Linux 無限ループ (PyGPbject) from gi.repository import GLib loop = GLib.MainLoop() loop.run() # macOS 無限ループ (PyObjC) from AppKit import * NSApplication.sharedApplication() NSApp.run() |
一行上に出力
1 2 3 4 5 6 7 8 9 | #!/usr/bin/env python3 import sys, time print ( 'いくぞー' ) for s in [ 'いーち' , 'にー' , 'さーん' , 'だぁー!' ]: time.sleep( 1 ) sys.stdout.write( '\033[1A\033[0J' ) # 移動 print (s) |
色分け表示
1 2 3 4 5 6 7 8 | #!/usr/bin/env python3 # gnome-terminal, Terminal.app で確認 print ( '\033[32m緑色おおおお' ); print ( '\033[31m赤色おおおお' ); # 戻す print ( '\033[39m' , end = ''); |
Copyright(C) sasakima-nao All rights reserved 2002 --- 2025.