<Linux, awk> ファイルを逆順に表示、、

ファイルを列の方向で逆順に表示する。
ただし、ヘッダーheaderはそのままにする。

(head -1 hage.csv ; tail -n +2 hage.csv |tac)

か、

awk '{a[NR]=$0} END{print a[1]; for (i=NR; i>1; i--) print a[i]}' hage.csv

サンキュースタックさん。
stackoverflow.com

<Windows, Python, win32com> COMサーバの登録

win32comを使って、Windowsのアプリケーションを操作する場合、
そもそも、対象となるアプリケーションが、レジストリregistryに登録されてないと呼び出せない、、ことを知る。

win32comから呼び出し可能か? は、makepy.pyで調べれる。
ここにリストされてると、呼び出し可能っぽい。

>cd /c/Anaconda3/Lib/site-packages/win32com/client
>python makepy.py

http://www.cesarkallas.net/arquivos/apostilas/python/doc/Python%20Programming%20on%20Win32_%20Chapter%2012%20Advanced%20Python%20and%20COM.pdf

18/09/14 修正。

上記ではうまくなかった。
レジストリに登録されていないと呼び出せないので、レジストリを検索してあるか? 調べるが正解っぽい。
regeditレジストリを起動して、HKEY_CLASSES_ROOTにぶら下がっているアプリケーションが呼び出せるもの。

で、本題。
登録されてない場合、どうやって登録するのか?
Windowsアプリケーションの.dll(ダイナミックリンクライブラリ形式)とか、.exe(実行形式)は、
どうも、 ActiveXサーバとか、COMサーバとか呼ばれてるっぽい。
登録は、下記コマンドをコマンドプロンプトでたたく。

#.dllをレジストリに登録
c:\>regsvr32 c:\hage.dll

#.dllをレジストリから削除
c:\>regsvr32 /u c:\hage.dll

#.exeをレジストリに登録
c:\hage.exe /regserver

#.exeをレジストリから削除
c:\hage.exe /unregserver

http://www5.plala.or.jp/softworld/topic_selfregistdll.htm

あと、Win7だと、管理者権限で登録かけないといけんらしい。
その場合、適当にcom.batとかいうファイルを作成して、中を、

c:\hage.exe /regserver

としておいて、管理者権限でcom.batを回せばいい。

COM Interface を Windows vista/Windows 7 で実行するには?

長い道のりじゃ。。。

<dos> バッチファイル中で、ネットワークドライブへ移動

バッチファイルbat fileや、コマンドプロンプトcommand prompt中で、ネットワークドライブNetwork driveへ移動する。

cdするとエラー起こす。

C\>cd \\hage\hage
'\\hage\hage'
CMD では UNC パスは現在のディレクトリとしてサポートされません。

pushdするそうです。

C:\>pushd \\hage\hage

参考。
バッチファイル内のネットワークパス操作はpushd/popdを使おう

ちなみに、ネットワークドライブはnet useで見れる。

C:\>net use
新しい接続は記憶されます。

ステータス ローカル名 リモート名 ネットワーク名
---------------------------------------------------------------
OK          F:          \\hage\hage Microsoft Windows Network

シェアしているディレクトリは、net shareで確認可。

C:\>net share
共有名  リソース          注釈
---------------------------------------------------------------
Hage      C:\Users\hage\myworks

<selenium> Windowサイズを変更

seleniumでウインドサイズwindow sizeを変更する技。

In [1]: from selenium import webdriver

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

In [10]: options = Options()

In [11]: options.add_argument('--window-size=100,100')

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

ちなみに、ヘッドレスheadlessにするには下記。

In [13]: options.add_argument('--headless')

スタックさん。
stackoverflow.com

<Python, PyAutoGui, Selenium> 認証ウインドを乗り越える、、

ブラウザBrowserが出す認証ウインドAuthentication Requiredを通過する技。
ググるとこのウインドは、ブラウザが出すもので、Seleniumで制御できないっぽい。

ということで、PyAutoGuiで対応したっす。

ブラウザを画面いっぱいにして、
真ん中に現れる認証ウインドをクリック、
そして、タブで入力箇所を移動して、
IDとパスを入れる。
その後は、Seleniumに制御を戻す。

from selenium import webdriver
import pyautogui as pa

d = webdriver.Firefox()
d.maximize_window()

url = 'hoge.hoge.com'

w, h = pa.size()
pa.moveTo(x=w / 2, y=h / 2, duration=0.0)

#Open Browser 
d.get('')
time.sleep(2)

#Click Browser and Select URL entry
pa.click(x=w / 2, y=h / 2, clicks=2, button="left")
pa.press(keys="tab", presses=2)

#Input URL and Return "Enter" key
pa.typewrite(url, interval=0.0)
pa.press(keys="enter", presses=1)
time.sleep(2)

#Select Authentication Required popup window and enter user_id/password
pa.click(x=w / 2, y=h / 2, clicks=2, button="left")
pa.press(keys="tab", presses=4)
pa.typewrite('USER', interval=0.0)
pa.press(keys="tab", presses=1)
pa.typewrite('PASSWORD', interval=0.0)
pa.press(keys="enter", presses=1)
time.sleep(5)

#Get Target Page object by Selenium
url = 'http://hoge.hoge.com/hage/hagex/'
d.get(url)

ぼちぼち動いた。

<PyAutoGUI, Python> オートメーション

オートメーションautomation、、つまり、マウス、キーボードの自動操作。
PyAutoGUIでできる。

インストールした。

>pip install python3-xlib
>pip install pyautogui

マニュアル。
Welcome to PyAutoGUI’s documentation! — PyAutoGUI 1.0.0 documentation

参考。
whitecat-student.hatenablog.com