かじっただけのPythonで便利ツールを作るためのメモ。Pythonは簡単でいいなー。
NCプログラムの編集を想定。
- ファイルの中身を全て読み込んでリストに放り込む
def readAll(fileName):
with open(fileName, "r") as f
ls = f.read().split("\n")
return ls
# f = open(fileName, "r")
# ls = f.read().split("\n")
# f.close()
return ls
- 正規表現でコメント(かっこで囲まれた文字)を削除
# 'O1000(SAMPLE)'
# → 'O1000'
import re
cmtptn = re.compile(r"\(.*?\)")
def removeComment(str):
return cmtptn.sub("", str)
- 正規表現でいい感じにパース
# 'G01X50.Y-50.Z-10.F500'
# → ['G01', 'X50.', 'Y-50.', 'Z-10.', 'F500']
ptr = re.compile(r"([A-Z#][^A-Z]+)")
def parse(str):
p = ptr.findall(str)
# print p
return p
- 引数で受け取ったファイルの中身を読む
import sys
if __name__ == "__main__":
prm = sys.argv
f1 = readAll(prm[1])
for line in f1:
print line
# line = removeComment(line)
# p = parse(line)
- ファイルに書き込み
# printされたやつをリダイレクトしたほうが簡単そう
# open/writeするならwithを使う(readAll参照)
f = open(fname, "w")
f.write("foo")
f.close
- 辞書
# coding: UTF-8
gcode = {
"G00": u"位置決め"
, "G01": u"直線補間"
}
# printするとき
print str(gcode).decode("unicode-escape")
- パース結果を辞書に含まれるやつのみにする
filtered = filter( lambda cd:gcode.has_key(cd) , parsed)
- 辞書から表示名取得
dsp = map( lambda cd:gcode[cd], filtered)
print str(dsp).decode("unicode-escape")
- 待ち合わせ判定
# 判定条件が合っているかは微妙
wptn = re.compile(r"M\d{3,}P\d{2,}")
def isWaitCode(str):
return wptn.match(str)
- 改行なしで標準出力
def sysout(v):
sys.stdout.write(str(v))
# 改行
def newline():
sysout("\n")