<Vim> vim-expand-region を入れた。

ふらふらとグーグルしていたら、よさげなプラグインを発見。入れた。

github.com

参考にさせてもらったところ。

vimの便利なPlugin(その24)vim-expand-region | 技術者魂

Vimメモ : vim-expand-regionでビジュアルモードの選択領域を拡大/縮小 - もた日記

Vimの生産性を高める12の方法 | POSTD

便利になった。

<Python, selenium> マウスホバーのやり方

レニウムseleniumでマウスホバーmouse hoverする方法。

まずは、selenium起動して、東京アメッシュに行ってみる。

In [1]: from selenium import webdriver

In [2]: from selenium.webdriver.chrome.options import Options

In [3]: options = Options()

In [4]: options.add_argument('--wndow-size=800,600')

In [6]: d = webdriver.Chrome(chrome_options=options)

In [7]: url = 'http://tokyo-ame.jwa.or.jp/'

In [8]: d.get(url)

f:id:nekoyukimmm:20180224192111p:plain

で、マウスホバーしたところのxpathを探す。

f:id:nekoyukimmm:20180224192318p:plain

1... F12に押す。
2... 1の部分を押す。
3... ターゲットの2を押す。
4... 3に行く。
5... マウス右クリックでメニューを出して、4Copy Xpathをゲット。

で、ゲットしたxpath

In [9]: xpath= '//*[@id="area_button"]/ul/li[8]/a/img'

で、マウスホバーするためのオブジェクト読み込み。

In [10]: from selenium.webdriver.common.action_chains import ActionChains

In [11]: actions = ActionChains(d)

で、ホバー。

In [12]: actions.move_to_element(d.find_element_by_xpath(xpath)).perform()

f:id:nekoyukimmm:20180224192732p:plain

ちなみに、xpathで指定するのは、タグtag内のアトリビュートattribute
いろいろ選べる。

f:id:nekoyukimmm:20180224192843p:plain

In [14]: xpath = '//*[@id="moviePlay"]'

In [15]: xpath = '//*[@name="play"]'

In [16]: d.find_element_by_xpath(xpath).click()

In [21]: xpath = '//*[text()="TEAM BEYOND"]'

In [22]: actions.move_to_element(d.find_element_by_xpath(xpath)).perform()

In [23]: d.quit()

<Python> ファイル名のリスト + 時刻でソート(その2)

検索したら過去に同じことをやってたが、せっかくなので、メモっておく。 ファイル名のリストlistを時刻timeでソートsortする。

In [4]: ls
 ドライブ C のボリューム ラベルは Windows8_OS です
 ボリューム シリアル番号は 1679-D852 です

 C:\msys64\home\Nekoyuki\tmp\tmp のディレクトリ

2018/02/24  11:16    <DIR>          .
2018/02/24  11:16    <DIR>          ..
2018/02/24  11:15                 1 aaa.txt
2018/02/24  11:15                 1 bbb.txt
2018/02/24  11:15                 1 ccc.txt
2018/02/24  11:16                 1 ddd.txt
2018/02/24  11:15                 1 fff.txt
               5 個のファイル                   5 バイト
               2 個のディレクトリ  67,190,915,072 バイトの空き領域

In [5]: import glob

In [6]: import os

In [7]: glob.glob('{}/*'.format(os.getcwd()))
Out[7]: 
['C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\aaa.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\bbb.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ccc.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\fff.txt']

In [8]: lst = glob.glob('{}/*'.format(os.getcwd()))

In [9]: [i for i in lst if 'ddd' in i]
Out[9]: ['C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt']

In [10]: [i for i in lst if 'ddd' in i][0]
Out[10]: 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt'

In [11]: os.path.getctime([i for i in lst if 'ddd' in i][0])
Out[11]: 1519438562.2302387

In [12]: lst.sort(key=lambda x: os.path.getctime(x))

In [13]: lst
Out[13]: 
['C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\aaa.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\bbb.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ccc.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\fff.txt',
 'C:\\msys64\\home\\Nekoyuki\\tmp\\tmp\\ddd.txt']

In [14]: [ os.path.getctime(i) for i in lst]
Out[14]: 
[1519438541.031442,
 1519438544.5682108,
 1519438548.668558,
 1519438556.8538623,
 1519438562.2302387]

In [15]: [os.path.basename(i) for i in lst]
Out[15]: ['aaa.txt', 'bbb.txt', 'ccc.txt', 'fff.txt', 'ddd.txt']

過去記事。
nekoyukimmm.hatenablog.com

<Python> 相対パス + ipythonでエラー

下記のようなファイル構成をとっていて、、

 % tree hage
hage
├── __init__.py
└── main.py
├── hige
│   ├── __init__.py
│   └── core.py

1 directory, 4 files

で、main.pyで、

from hige.core import *

として、インポートする。
この場合は、ipythonで、run main.pyは問題なく動く。
が、pipでインストールする場合、こける。

が、相対パスでインポートする記述の場合、 つまり、

from .hige.core import *

とすると、 ipythonでのrun main.pyはこけるが、
pipインストールは成功する。

どっちもうまくならんもんか?、、 と思っていたら、
いつものスタックさんに回答があった。

下記でうまくいった。

try:
    from .hige.core import *
except Exception:
    from hige.core import *

いつも助かるスタックオーバーフローさん。
stackoverflow.com

<Python> listから空のものを除く

listから、空つまり、"のものを除く。
リスト内包表記を使えば一発。

リスト作成。

In [1]: aaa = '''
   ...: aaa
   ...: bbb
   ...: ccc
   ...: '''

In [2]: aaa.split('\n')
Out[2]: ['', 'aaa', 'bbb', 'ccc', '']

In [3]: lst = aaa.split('\n')

In [4]: lst
Out[4]: ['', 'aaa', 'bbb', 'ccc', '']

で、リスト内包表記

In [5]: [x for x in lst if x is not '']
Out[5]: ['aaa', 'bbb', 'ccc']