Paepoi

スポンサードリンク
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.