やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

pythonでXMLファイルを編集したかったが断念

 ~/.config/openbox/lxde-pi-rc.xmlを編集するスクリプトを書きたかったので。

参考

手順

import xml.etree.ElementTree as ET
import pathlib

path = str(pathlib.Path('~/.config/openbox/lxde-pi-rc.xml').expanduser())

tree = ET.parse(path)
root = tree.getroot()

ns = {'ob': 'http://openbox.org/3.4/rc'}
for keybind in root.findall('.//ob:keybind', ns):
    print(keybind.attrib['key'])
keyboard = root.findall('.//ob:keyboard', ns)
print(keyboard)

keybind = ET.Element('keybind', {'key': 'C-S-m'})
action = ET.SubElement(keybind, 'action', {'name': 'Execute'})
command = ET.SubElement(action, 'command')
command.text = 'scrot'
keyboard.append(keybind)

#tree.write(path)

 Ctrl+Shift+Mキーでscrotコマンドを実行するホットキーを追加したかった。

 しかし追加されず。それだけでなくファイルを壊された。勝手に要素に名前空間を付与された。コメント消された。……。

対象環境

  • Raspbierry pi 3 Model B+
  • Raspbian stretch 9.0 2018-11-13
  • bash 4.4.12
$ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux

糞ポイント

  • 参照エラー(ファイル名重複)
    • xml.pyにするとImportError: No module named 'xml.etree'; 'xml' is not a packageと怒られる
      • xmltest.pyなど他の名前にする
  • 検索
  • 書込
    • 勝手に要素名に名前空間がつけられる
    • 勝手にコメントを削除される

 ひどすぎて目も当てられない。使い物にならない。

所感

 やっぱりXMLは触りたくない。思い通りに操作できない。ここまでひどいとは思わなかった。もうこれ以上は面倒すぎて嫌。