10th Anniversary

2018-06-25 :  その他
本日は、平成30年6月25日です。
と云うことは、ブログ開設10周年と云うこと。


始まりは、
平成20年の記事:先ずは自己紹介から。
からでした。

その後、
Anniversary」検索結果の如く、

最初の4年間は、毎年の様に記事を書いていた:
・ 2009/06/25 : 1st Anniversary
・ 2009/07/26 : 1年1ヶ月と1日
・ 2010/06/25 : 2nd Anniversary
・ 2010/07/26 : 2年1ヶ月と1日
・ 2011/06/25 : 3rd Anniversary
・ 2011/09/25 : 3周年と3ヶ月
・ 2012/06/25 : 4th Anniversary


久し振りだが、
やはり、10周年は特別です。


ブログが、途中で gooブログ から、FC2ブログに移っている:
平成22年8月1日付記事:ブログこちらに引っ越しました

だが、記事中のリンク先は gooブログのままで過ごしていた。
やっと先日、
FC2ブログに変換し終えた:
使ったプログラムは、2018-06-15 の記事:「ブログ移行用プログラムコード」のもの。




最近、記事投稿が減ってきている。

もっと頑張らないと駄目だナ。


今後とも、
<紙>さんLoGご愛顧のほど、お願い致します。 <(_ _)>


見ていただきありがとうございました。



本日はここまで。


メインの使用言語は、Anaconda ( Python ) か GSL Shell ( Lua ) か?
それと、Perl か???


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180625
スポンサーサイト

OpenBabel 学習:Sybyl Mol2 format ( ml2, sy2, mol2 )

2018-06-22 :  理科部 部活
前々回(2018-06-18)の記事:
OpenBabel 学習:xyz2mol 処理」に関連して、
前回(2018-06-20)の記事「OpenBabel 学習:ViewMol format ( vmol )」同様に、
“Open Babel v2.3.1 documentation”の
Supported File Formats and Options
を見ていたら、
“Common cheminformatics formats”の中に、
Sybyl Mol2 format (ml2, sy2, mol2)
があった。

どんな形式なのか?

4年前(2014-02-03)の記事「NaNO3 を、JSmol で表示すると…
で使った、以下の「.xyz」ファイル形式のファイル:
5
NaNO3 : Sodium Nitrate
Na 2.170377 7.394214 0.000000
N 5.091654 7.394214 1.398583
O 4.016332 8.015051 1.398583
O 6.166976 8.015051 1.398583
O 5.091654 6.152539 1.398583
を変換してみた。

「.mol2」形式:
@MOLECULE
NaNO3 : Sodium Nitrate
5 4 0 0 0
SMALL
GASTEIGER

@ATOM
1 NA 2.1704 7.3942 0.0000 Na 1 UNL1 0.0000
2 N 5.0917 7.3942 1.3986 N.pl3 1 UNL1 0.0000
3 O 4.0163 8.0151 1.3986 O.2 1 UNL1 0.0000
4 O 6.1670 8.0151 1.3986 O.2 1 UNL1 0.0000
5 O 5.0917 6.1525 1.3986 O.2 1 UNL1 0.0000
@BOND
1 1 3 1
2 2 3 1
3 2 4 2
4 2 5 2
となった。

因みに、「.mol」形式での出力では、
NaNO3 : Sodium Nitrate
OpenBabel05241811033D

5 4 0 0 0 0 0 0 0 0999 V2000
2.1704 7.3942 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0
5.0917 7.3942 1.3986 N 0 0 0 0 0 0 0 0 0 0 0 0
4.0163 8.0151 1.3986 O 0 0 0 0 0 0 0 0 0 0 0 0
6.1670 8.0151 1.3986 O 0 0 0 0 0 0 0 0 0 0 0 0
5.0917 6.1525 1.3986 O 0 0 0 0 0 0 0 0 0 0 0 0
1 3 1 0 0 0 0
2 3 1 0 0 0 0
2 4 2 0 0 0 0
2 5 2 0 0 0 0
M END
ですネ。

但し、これは V2000 形式なので、
V3000 形式としたら、
NaNO3 : Sodium Nitrate
OpenBabel05241811053D

0 0 0 0 0 999 V3000
M V30 BEGIN CTAB
M V30 COUNTS 5 4 0 0 0
M V30 BEGIN ATOM
M V30 1 Na 2.17038 7.39421 0 0
M V30 2 N 5.09165 7.39421 1.39858 0
M V30 3 O 4.01633 8.01505 1.39858 0
M V30 4 O 6.16698 8.01505 1.39858 0
M V30 5 O 5.09165 6.15254 1.39858 0
M V30 END ATOM
M V30 BEGIN BOND
M V30 1 1 1 3
M V30 2 1 2 3
M V30 3 2 2 4
M V30 4 2 2 5
M V30 END BOND
M V30 END CTAB
M END
となる。


「.xyz」形式から、結合情報を取得するなら、

.mol2形式がシンプル(?)で宜しいのかナ。


本日はここまで。



Anaconda ( Python ) 学習じゃなくて OpenBabel 学習(?)続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180424

OpenBabel 学習:ViewMol format ( vmol )

2018-06-20 :  理科部 部活
“Open Babel v2.3.1 documentation”の
Supported File Formats and Options
を見ていたら、
“3D viewer formats”の中に、
ViewMol format (vmol)
があった。

どんな形式なのか?

4年前(2014-02-03)の記事「NaNO3 を、JSmol で表示すると…
で使った、以下の「.xyz」ファイル形式のファイル:
5
NaNO3 : Sodium Nitrate
Na 2.170377 7.394214 0.000000
N 5.091654 7.394214 1.398583
O 4.016332 8.015051 1.398583
O 6.166976 8.015051 1.398583
O 5.091654 6.152539 1.398583
を変換してみた。

$title
NaNO3 : Sodium Nitrate
$coord 1.0
2.17037700000000 7.39421400000000 0.00000000000000 Na
5.09165400000000 7.39421400000000 1.39858300000000 N
4.01633200000000 8.01505100000000 1.39858300000000 O
6.16697600000000 8.01505100000000 1.39858300000000 O
5.09165400000000 6.15253900000000 1.39858300000000 O
$end
となった。

因みに、「.xyz」形式での出力では、
5
NaNO3 : Sodium Nitrate
Na 2.17038 7.39421 0.00000
N 5.09165 7.39421 1.39858
O 4.01633 8.01505 1.39858
O 6.16698 8.01505 1.39858
O 5.09165 6.15254 1.39858
ですネ。

どっちもフリー・フォーマット形式だが、
座標値表示桁数に決定的な差がある。
「.xyz」では、%.5f だが、
「.vmol」ではなんと、%.14f と成っている。

<紙>的には、%14.9f で十二分と思っていたが。


本日はここまで。



Anaconda ( Python ) 学習じゃなくて OpenBabel 学習(?)続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180423

OpenBabel 学習:xyz2mol 処理

2018-06-18 :  PCクリニック
4年前(2014-08-08)の記事:
プログラム設計:msi2mol
  ・・・・・正しくは、xyz2molでしたが
で設計し、

昨年(2017-10-27)の記事:
Python プログラム:xyz2mol.py
で、Python版を作り、

そして、
続(2017-10-30)く記事:
GSL Shell プログラム:xyz2mol.gsl
で、GSL Shell版を作った:

   座標データだけから成るファイルを元に、
   原子間の結合データを生成する

処理コード


これに関しては、・・・・・

結論として、
自作する必要は無かった。
OpenBabel
を使えば十分ダ。


DOS コマンドでは、

  obabel hoge.xyz -Ohoge.mol

これだけ!


Python からは、

「subprocess」の「call」を使って 上記コマンドを実行する。



1点留意事項がある。

mol形式だと、
標準では、V2000形式であって、99 原子まで。
100 原子以上の場合は、V3000形式に自動的に変わる。


これでは、不都合な場合もある。

強制的にV3000形式で出力させたい場合は、

  obabel hoge.xyz -Ohoge.mol -x3

とすれば良い。


あるいは、mol形式に拘らずに
Sybyl Mol2 format (ml2, sy2, mol2)
形式にした方が良さそうダ。



本日はここまで。


OpenBabel と、Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180424

ブログ移行用プログラムコード

2018-06-15 :  その他
先日(2018-06-01)の記事:
ブログ移行を完結させる:計画」から、
移行手順に沿ったプログラムを、GSL Shell で3本作った。


(1)対象記事の取り込み用
----- Get_Blog.gsl -----
local lfs = require'lfs'; require'winman'

function send_keys( text, ts ) -- 文字列 Send
winman.send( text ); winman.sleep( ts )
end
function move_mouse( pos, ts ) -- マウスカーソル移動
winman.at( pos ); winman.click(); winman.sleep( ts )
end

CWD = lfs.currentdir()
URL = 'http://admin.blog.fc2.com/control.php?mode=editor&process=load&eno='

-- FC2ブログ管理画面用に「kinza」を事前に立ち上げログインしておく。
kinza = winman.find{matchtitle=".+Kinza.*$", wait=4000}

for num = 471,1033 do --対象記事は全563件
-- 記事取り込み保存用に「メモ帳」を使う。
os.execute( 'start notepad' )
Note = winman.find{matchtitle=".+メモ帳.*$", wait=4000}

kinza:activate()
-- URL 入力領域:
move_mouse({900,65}, 50); send_keys( URL..num..'{ENTER}', 2500 )
-- 記事編集領域:
move_mouse({900,700},50); send_keys( '^a^c', 700 ) -- Ctrl+A、Ctrl+C

Note:activate(); send_keys( '^v', 500 ) -- Ctrl+V
send_keys( '%f', 100 ); send_keys( 'a', 500 ) -- Alt+F -> A
send_keys( CWD, 100 ); send_keys( '\\blog_'..num..'.txt', 300 )
send_keys( '{ENTER}', 600 ) ----- ファイル保存後、メモ帳終了
send_keys( '%f', 100 ); send_keys( 'x', 500 ) -- Alt+F -> X
end

(2)記事内のリンク先変換用
----- Convert_Blog.gsl -----
require'pl'; SF = string.find; SS = string.sub

w = utils.readlines( 'blog_conv.txt' ) -- リンク先対応表
tt={}; for n=1,#w do tt[n]=stringx.split(w[n])[1] end

URL = 'jn1inl.blog77.fc2.com/blog-entry-' -- 変換後の固定部

flist = dir.getfiles( './IN' ); zz=#flist

for z=1,zz do
num = SS(flist[z],11,-5) -- 471 ~ 1033

cnt=0 -- リンク先の変換があったか?カウンタ
w = file.read( './IN/blog_'..num..'.txt' ) -- ファイル丸ごと1文字列
k = 1
while SF( w, 'blog.goo.ne.jp/jn1inl', k ) ~= nil do cnt=cnt+1
j=SF(w,'blog.goo.ne.jp/jn1inl',k); j=j+5
uu=SS(w,j+19,j+50); k=j+19; m=1
while uu ~= tt[m] do m=m+1 end
w = SS(w,1,j-6) .. URL .. m+470 .. '.html' .. SS(w,j+51)
end
if cnt>0 then
OT=io.open( './OT/blog_'..num..'.txt', 'w' )
OT:write( w ); OT:close()
end
end
ここで、
「blog_conv.txt」は、
28b945dbe679f27c6d9d698354c153c6    471
e6219c0944d522ebb49cfb742c491dfa 472
・・・・・
の様な対応表。

(3)対象記事の書き戻し用
----- Put_Blog.gsl -----
require'pl'; require'winman'; require'clipboard'
SS = string.sub

function send_keys( text, ts ) -- 文字列 Send
winman.send( text ); winman.sleep( ts )
end
function send_C_keys( text, ts ) -- clipboard 経由 Send
clipboard.settext( text )
winman.sleep( 300 )
winman.send( '^v' )
winman.sleep( ts )
end
function move_mouse( pos, ts ) -- マウスカーソル移動
winman.at( pos ); winman.click(); winman.sleep( ts )
end

URL = 'http://admin.blog.fc2.com/control.php?mode=editor&process=load&eno='

-- FC2ブログ管理画面用に「kinza」を事前に立ち上げログインしておく。
kinza = winman.find{matchtitle=".+Kinza.*$", wait=4000}

flist = dir.getfiles( './OT' ); zz=#flist -- 563 以下

for z = 1,zz do
num = SS(flist[z],11,-5)
w = file.read( flist[z] ) -- ファイル丸ごと1文字列

kinza:activate()
-- URL 入力領域:
move_mouse({900,65}, 50); send_keys( URL..num..'{ENTER}', 2500 )
-- 記事編集領域:
move_mouse({900,700},50); send_keys( '^a{DEL}', 200 ) -- Ctrl+A、[Delete]
send_C_keys( w, 1500 )

move_mouse({1052,841},100) --「リアルタイムプレビュー」の [X]クリック
move_mouse({650,850},1500) --「記事を保存」クリック
end

以上の3本。

数件ずつテストしてみて、

GUI の画面遷移には時間を取らないといけないので、

結局、1記事当たり 6000ミリ秒は必要?
   ・・・・約600記事では約1時間必要。


と云うことで、後は実行あるのみ?


本日はここまで。



出来たコードによる移行作業の実行に続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180527

Windows 版 OpenBabel v2.4.1 for 64-bit 導入

2018-06-13 :  PCクリニック

分子構造データファイルに関して学習していた。
思い出して、
Open Babel: The Open Source Chemistry Toolboxサイトを見た:
Open Babel: The Open Source Chemistry Toolbox

最新版は、v2.4.1 に成っている。


今使っているのは、
かれこれ3年前(2015-12-06)の記事「OpenBabel:Develop with Open Babel
の如く、「OpenBabelGUI version 2.3.1」

そこで、
Get Open Babel」ページから、

OpenBabel-2.4.1.exe 2016-10-11 付 21.9MB

をダウンロードして、
インストール:D:/TOOL/OpenBabel-2.4.1/ に。


改めて、ドキュメントを学習した。


1)「.msi」ファイルを読み込めたんだった

 “Supported File Formats and Options”

 「Accelrys/MSI Cerius II MSI format (msi)



2)コマンドで実行するには:

 “Open Babel v2.3.1 documentation”の
 「obabel and babel - Convert, Filter and Manipulate Chemical Data

  obabel and babel are cross-platform programs designed to
  interconvert between many file formats used in molecular modeling
  and computational chemistry and related areas.
  They can also be used for filtering molecules and for
  simple manipulation of chemical data.

  ・・・・・

  obabel is recommended over babel
  (see Differences between babel and obabel).

  ・・・・・
  ・・・・・

obabel を使うべし。

  obabel hogeA.msi -OhogeB.mol

の様に。


ところで、Python interface は無いのかナ?

探してみたら、
“Python Package Index”に、
openbabel 2.4.1」があった。
  This is a Python interface to the Open Babel chemistry library.

左ペイン(?)の
  Download files
から、
  openbabel-2.4.1-cp27-cp27m-win_amd64.whl
   (722.2 kB)  Py2.7  Jan 2, 2017
をダウンロードして、
解凍して、
(フォルダ内では無くて)直下にある3つを、
<紙>の場合、 D:/TOOL/Anaconda2/Lib/site-packages/ に格納した。

で、テスト実行してみたが、
 DLL が見つからない
と出て使えない。
・・・格納を取り消した。


Anaconda ( Python ) では?

openbabel / packages / openbabel 2.4.1
が見つかる。

  conda install -c openbabel openbabel

でインストール。
パッケージは1つのみ追加された。

これでも、
 DLL が見つからない
と出て使えない。

諦めた。
・・・インストールを取り消した。


Python からは、

 「subprocess」の「call」を使って obabel を実行する。

ことにする。


ところで、
OpenBabelGUIの起動方法は?

1)スタートメニューの「Open Babel GUI」から実行

2)コマンドプロンプトで、「obgui」と打ち込む

と云うこと。



本日はここまで。


OpenBabel と、Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180422

Anaconda 学習:TensorBoard について

2018-06-11 :  PCクリニック
2ヶ月前(2018-04-13)の記事:
Anaconda 学習:Gensim って何?」で、

  ・・・・・
  ・・・・・
  とか、
    MeCab ( 単語分割 )
    TensorBoard ( ビジュアライザ )

  とかと云った言葉が載っていた。
  ・・・・・
  ・・・・・

と書いていた。


TensorBoard に関して若干調べてみたので、
メモ書き(備忘録)。



「Tensorboard」検索で、

Qiita の
【TensorBoard入門】TensorFlow処理を見える化して理解を深める
が見つかる。

  文系卒でDeep LearningどころかPythonも初めてだと、
  TensorFlowを理解するのが遅くてなかなか苦しいです。
  少しでも理解を早めるためにもTensorBoardを学習しました。
  複雑なディープラーニングの理解促進はもちろん、
  デバッグや処理最適化・再設計などいろんなことに使えます。
  いろいろな見える化ができるのですが、
  当記事は入門者に向けたGraph出力方法に絞って解説します

  公式ガイド「TensorBoard: Visualizing Learning」がわかりにくかったので、
  かなり簡素化しています。
  TensorBoardで処理を可視化するのサイトが素晴らしく、
  かなり参考にさせて頂きました。

  ・・・・・
  ・・・・・

  Tensorboardを起動します。
  筆者の環境はAnacondaで構築しているので、
  まずAnaconda NavigatorからTerminalを起動して

  ・・・・・
  ・・・・・

  起動後にブラウザで http://localhost:6006/ を開くと
  TensorBoard画面が表示されます。

  ・・・・・
  ・・・・・



それから、
Qiita の
TensorFlowとTensorBoardでニューラルネットワークを可視化
が見つかる。

  概要

  TensorFlowについてくるTensorBoardを使うと
  ニューラルネットワークの学習過程やデータフローが簡単に
  可視化できてすごいという話。

  以下のドキュメントの内容を実際に動かしてみた結果です。

  ・TensorFlow Mechanics 101
  ・TensorBoard: Visualizing Learning


  前提知識

  ・Neural Networkをちょっとかじった人のための、はじめてのTensorFlow
  ・TensorFlow 畳み込みニューラルネットワークで手書き認識率99.2%の
   分類器を構築



さらに、
mwSoft”の
TensorBoardで処理を可視化する

  概要

  TensorFlowのTensorBoardを使って単純な処理を可視化してみる。


  1 + 2を可視化する

  定数で 1 + 2 をするだけの処理でグラフを書いてみる。

  ・・・・・
  ・・・・・



こう云った記事を教材にして学習かナ?



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180302

Anaconda 学習:psutil パッケージ

2018-06-08 :  PCクリニック
前(2018-06-06)の記事:
Anaconda 学習:mpmath パッケージ」に続いて、
Anaconda 5.0.1 : Windows 版 Python 2.7.14 ( 64bit 版 )
に、
含まれるパッケージ:「Packages for 64-bit Windows with Python 2.7
から、
デフォルトで入っているものを見ていた。

その中で気になったものに、

psutil 5.4.3 A cross-platform process and system utilities module

があった。


リンク先を見ると、

  psutil (process and system utilities) is a cross-platform library
  for retrieving information on running processes and system utilization
  (CPU, memory, disks, network, sensors) in Python.
   It is useful mainly for system monitoring, profiling and limiting
  process resources and management of running processes.
   It implements many functionalities offered by UNIX command line tools
  such as: ps, top, lsof, netstat, ifconfig, who, df, kill, free, nice,
  ionice, iostat, iotop, uptime, pidof, tty, taskset, pmap.
   psutil currently supports the following platforms:

===

  psutil(プロセスとシステムユーティリティ)は、実行中のプロセスやシステム
  の利用状況(CPU、メモリ、ディスク、ネットワーク、センサー)に関する情報
  をPythonで取得するためのクロスプラットフォームのライブラリです。
   主にシステムの監視、プロファイリング、およびプロセスリソースの制限、
  実行中のプロセスの管理に役立ちます。
   ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、
  iostat、iotop、uptime、pidof、tty、taskset、pmapなどのUNIXコマンドライン
  ツールによって提供される多くの機能を実装しています。
   psutilは現在、次のプラットフォームをサポートしています:

  ・・・・・
  ・・・・・


それで、

  Example usages

として、

  CPU

  Memory

  Disks

  Network

  Sensors

  Other system info

  Process management

  Further process APIs

  Windows services

等々が載っている。


なお、ドキュメントサイトは、
psutil documentation
でしょうか?

ここの、

  Recipes

を見ていたら、

  Filtering and sorting processes

に載っているコードサンプルに、

from pprint import pprint as pp
とか、
import getpass
とか、
と云ったコードがある。

どんなものか検索してみたら、

8.18. pprint - データ出力の整然化
  pprint モジュールを使うと、Pythonの任意のデータ構造をインタープリタへの
  入力で使われる形式にして"pretty-print"できます。
  フォーマット化された構造の中にPythonの基本的なタイプではない
  オブジェクトがあるなら、表示できないかもしれません。
  Pythonの定数として表現できない多くの組み込みオブジェクトと同様、
  ファイル、ソケット、クラスあるいはインスタンスのようなオブジェクトが
  含まれていた場合は出力できません。
  ・・・・・
  ・・・・・
とか、

15.10. getpass - 可搬性のあるパスワード入力機構
  getpass モジュールは二つの関数を提供します:
  ・・・・・
  ・・・・・
とか、

共に、Python 標準のライブラリでした。


こういった、psutil
そして、
pprintgetpass も学習テーマだナ?



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180505

Anaconda 学習:mpmath パッケージ

2018-06-06 :  PCクリニック
先日(2018-05-25)の記事「Anaconda 学習:imageio パッケージ」に続いて、
Anaconda 5.0.1 : Windows 版 Python 2.7.14 ( 64bit 版 )
に、
含まれるパッケージ:「Packages for 64-bit Windows with Python 2.7
から、
デフォルトで入っているものを見ていた。

その中で気になったものに、

mpmath 1.0.0 Python library for arbitrary-precision
          floating-point arithmetic

があった。


リンク先を見ると、

   mpmath is a free (BSD licensed) Python library for real and complex
  floating-point arithmetic with arbitrary precision.
   It has been developed by Fredrik Johansson since 2007,
  with help from many contributors.

   The following example computes 50 digits of pi by numerically evaluating
  the Gaussian integral with mpmath. See 100 mpmath one-liners for pi and
  the documentation links below for many more examples!

===

   mpmathは、任意精度の実数および複素数浮動小数点演算のための
  フリー(BSDライセンス)Pythonライブラリです。
   それは多くの貢献者の助けを借りて2007年からFredrik Johansson
  によって開発されました。

   次の例では、mpmathでガウス積分を数値的に評価してpiの50桁を計算します。
  piについては100 mpmathのone-linersを参照し、さらに多くの例については
  ドキュメントのリンクを参照してください。

  ・・・・・
  ・・・・・


それで、
ドキュメントは、
Main documentation, current development version」(HTML)
ですね。


  Introduction
の、
  ・Setting up mpmath
の、
  ・Using gmpy (optional)
には、

  By default, mpmath uses Python integers internally.
  If gmpy version 1.03 or later is installed on your system, mpmath will
  automatically detect it and transparently use gmpy integers intead.
  This makes mpmath much faster, especially at high precision
  (approximately above 100 digits).

  To verify that mpmath uses gmpy, check the internal variable BACKEND
  is not equal to ‘python’:

===

  デフォルトでは、mpmathはPython整数を内部的に使用します。
  システムにgmpyバージョン1.03以降がインストールされている場合、
  mpmathはそれを自動的に検出し、gmpy整数をそのまま使用します。
  これにより、mpmathがはるかに高速に、特に高精度(100桁程度)
  で高速になります。

  mpmathがgmpyを使用していることを確認するには、内部変数BACKENDが
  'python'と等しくないことを確認します。

  ・・・・・
  ・・・・・

とある。


この gmpy は、デフォルトでは入っていない。



こういった、mpmath や、gmpy も学習テーマかな?



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180505

Anaconda 学習:レジストリ・アクセス

2018-06-04 :  PCクリニック
かれこれ10年前(2008-10-22)の記事:
「バールのようなもの」続”では、

  ・・・・・
  ・・・・・
  「REI sweeper」は、指定のレジストリやファイルを削除するツールです。
  同じディレクトリにあるsweeper.ini ファイルに記述されたことを実行する。
  見た目の変化は起こらない。

  「WinBatch」はレジストリの操作(追加・削除・変更)やファイルの削除など、
  昔の MS-DOS のバッチコマンドを拡張したような処理を記述できるものです。
  拡張子 .BTW ファイルをエディタで作り、関連づけをしておくとよい。

  但し、「REI sweeper」は、レジストリのキーレベルのみ対象で、
  項目レベルには対処できない。
  一方、「WinBatch」では、レジストリの項目レベルにも対処できる。
  ・・・・・
  ・・・・・

と書いている。


此処に来て、
久々に“WinBatch”を見てみた:

  ・・・・・
  ・・・・・
  皆様にご愛顧いただいて参りました「WinBatch」ですが、
  本製品の開発元である Wilson WindowWare, Inc.が諸般の事情により、
  来る2017年6月末日をもちまして会社業務を終了することとなりました。

  つきましては、現在、弊社での販売を終了させていただいております。
  皆様の長年にわたるご愛顧に心から感謝申し上げますとともに、
  何卒、事情をご諒察賜り、ご理解いただきますようお願い申し上げます。

  なお、ご購入されたお客様においては、
  引き続き、製品のご利用はいただけます。
  ・・・・・
  ・・・・・

となっていた。


そんな訳で、
Python で、レジストリ・アクセス について学習しようと思った。

手始めに、
このブログ内で「レジストリ アクセス」検索を行った。

 ・2018/02/21 : 調査結果メモ:“波乗野郎”代替“CompleteGetter”
 ・2016/12/26 : viva “GSL Shell”
 ・2016/11/09 : Lua 学習: xls ファイル出力
 ・2009/02/11 : 仮想 高校 化学部 部活 ?
 ・2008/11/13 : Windows XP「検索」画面設定
 ・2008/11/09 : Windows操作の自動化ツール
 ・2008/10/22 :「バールのようなもの」続
 ・2008/08/28 :『Windows Update』
 ・2008/08/09 : 体験版ソフト

等々が見つかるが、・・・・・


実質、
冒頭の“「バールのようなもの」続”だけダ。

そこで、「Python レジストリ・アクセス」Google 検索では、


“PythonRecipe”の
214:Windowsレジストリにアクセスする

  Windows のレジストリを操作するには _winreg モジュールを 使います。
  まだ Windows API の薄いラッパーにすぎないモジュールであるため、
  新たな実装を募集中のようです。

  ・・・・・
  ・・・・・


“かせきのうさぎさん”の
winreg でレジストリを読み書きするサンプルコード

  標準ライブラリに入ってる winreg を使うとレジストリの読み書きができるけど、
  こいつは Windows API を薄く包んでいるだけなのでリファレンスを見ても
  使い方がさっぱりわからないという。

  いろいろ調べて、おそらくこうするのが正しいと思われる
  サンプルコードを書いた。

  ・・・・・
  ・・・・・


“Python 2.7.15 ドキュメント”の
35.3. _winreg - Windows レジストリへのアクセス

  これらの関数は Windows レジストリ API を Python から使えるようにします。
  プログラマがレジストリハンドルのクローズを失念した場合でも、
  確実にハンドルがクローズされるようにするために、整数値をレジストリ
  ハンドルとして使う代わりに ハンドルオブジェクト が使われます。

  ・・・・・
  ・・・・・


これらを参考にして、

むかし、WinBatch で、作っていた:
setregstring=RIGHT /R:HKEY_CURRENT_USER "SOFTWARE\hoge1\hoge2"
setregstring=RIGHT /N /R:HKEY_CURRENT_USER "SOFTWARE\Licenses\hoge3"
に相当することを書いてみた。
import _winreg
KR = _winreg.HKEY_CURRENT_USER
KL1 = 'Software\\hoge1\\hoge2'; KL2 = 'Software\\Licenses'

_winreg.DeleteKey( KR, KL1 )

key = _winreg.OpenKey( KR, KL2, 0, _winreg.KEY_ALL_ACCESS )
_winreg.DeleteValue( key, 'hoge3' )
と云うことで、良さそう?



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180428

ブログ移行を完結させる:計画

2018-06-01 :  その他
ブログ移行を完結させる(予定)」を書いたのは、
かれこれ6年前の、2012-08-16 だった。

今まで放置していたが、
ブログ開設10周年を目前にして、
一念発起”して、完結させる計画を立てた。


手順の概要:

(1)全563件の記事について、
  FC2ブログの「記事の編集」画面から、
  1件1ファイルとして取り込む。

(2)各ファイルの記事について、
  過去記事参照先がgooブログのものを
  FC2ブログに変換する。

(3)変換した各記事について、
  FC2ブログの「記事の編集」画面から、
  書き戻す。
  (変換不要のものはパスする)

以上の3手順で、
それぞれ GSL Shell でコード化して実行する。


各手順の具体化:

(1)FC2ブログの「記事の編集」画面は、
  ログインが必要なので、
  手操作で Web ブラウザを立ち上げておき、
  「afxLua / winman」を使って操作する。
  ・URL 入力フィールドに入力し、
  ・編集領域をクリックして、
   「Ctrl+A」「Ctrl+V」で読み取り、
  ・「メモ帳」を立ち上げておいて、貼り付け、
   ファイル名を指定して保存する。
 以上を 563 回、繰り返す

(2)参照リンクが gooブログのものは、
  対応テーブルを用意しておいて、
  FC2ブログ用に変換する。

(3)記事の書き戻しは、
  大筋で、(1)の逆処理。


以上の処理方式だと、

処理時間は、
(1)が約30分
(2)は微々たるモノ
(3)も約30分
でしょうか?


今回こそ、
頑張って移行を完結させよう。



本日はここまで。


GSL Shell コーディングに続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180523

Anaconda 学習:with 構文

2018-05-30 :  PCクリニック
Python のサンプルコードを見ていると、・・・・・

時には、
with open( 'foo.txt', 'w' ) as f:
f.write( 'sample statement:' )
と云った様なコードを目にする。

遅ればせながら、
この with について学習した。

「Python with」で検索 ・・・

with構文”で多数みつかる。


1つ:
“Qiita”の
with構文(Python)

   with構文を使うとついつい忘れてしまうclose()を省略することができる上に
  可読性も上がるので便利。
#with文使用
with open("text.txt", 'w') as text:
text.write("Hello, world!")
  の様に、
    text.close()
  を書かなくて良い。


もう1つ:
“blog.PanicBlanket.com”の
Pythonのwith構文を覚えた!

  基本的な使い方

  ファイルを開いて読み込む処理が典型的かな。
  今まではこうしていた:
f = open('data.txt', 'r')
print f.read()
f.close()
  with 構文を使うとこう書ける:
with open('data.txt', 'r') as f:
print f.read()
  開いたファイルは、
  ブロックを抜けるときに自動で閉じてくれる。

withに対応したクラス

  with 構文に書けるクラスはファイルだけじゃない。
  __enter__ と __exit__ の2つのメソッドを持ったクラス
  (のインスタンス)なら何でもいい。
  __enter__ はブロックに入るときに、__exit__ はブロックを
  抜けるときに呼ばれる。
  ちょっと試してみよう。

  ・・・・・
  ・・・・・

  ブロックの中を実行する前に __enter__ が、
  あとに __exit__ が呼ばれているのがわかる。
  as t: の部分の t には、__enter__ の返り値が代入されるので、
  self を返している。

  ともあれ、1行短くなって見やすくなる。
  これからはこうやって書くようにしよう。


と云うことでした。



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180417

“.xlsx”ファイルとは ZIP 書庫のこと

2018-05-28 :  PCクリニック
先日(2018-05-09)の記事:
Anaconda 学習:Excel ファイル・アクセス」では、

「openpyxl」を学習した。

  ・・・・・
  ・・・・・

  Openpyxlは、Excel 2010 xlsx / xlsm / xltx / xltmファイルを
  読み書きするためのPythonライブラリです。

  これは、PythonからOffice Open XMLフォーマットをネイティブに
  ・・・・・

  ・・・・・
  ・・・・・


これでは、.xlsx は、
  “Office Open XMLフォーマット”である。
とあった。


<紙>の知識では、
“.xlsx”は、XML 即ち eXtensible Markup Language
だが、これって、HTML と同じテキストだと思っていた。

でも、
.xlsx はバイナリファイル?

つまり、“Office Open XMLフォーマット”はバイナリ形式?



バイナリモードの XML について探してみたが、・・・・・

見つからない。

無いものが見つからないのは当然?


こんな記事が見つかった:

OpenBook Excel and Software development and more...
の、
Excel ブック (*.xlsx) 形式概要

  ◆Office Open XML

  Office 2007 から採用されているファイル形式「Office Open XML」は、
  XML をベースとしたオフィスソフトウェア用のファイルフォーマット形式です。
  2006 年 12 月に Ecma International により ECMA-376 として標準化され、
  2008 年 4 月には ISO と IEC の合同技術委員会 ISO/IEC JTC 1 の副委員会
  SC 34 において、ISO/IEC 29500 として標準化されました(Wiki ペディアより)。
  詳細な仕様については、Ecma International のホームページから
  約 5500 ページに渡る仕様書をダウンロードすることができます。

  ◆Excel ファイル構造

  Office 2007 からは XML で記述された文書と画像やプリンタ情報などの
  バイナリ情報を ZIP でパッケージングして格納するようになりました。
  Excel の場合、拡張子を「.xlsx」から「.zip」に変更してエクスプローラで
  構造を確認することができます。

  ・・・・・
  ・・・・・


詰まるところ、
.xlsx”ファイルは ZIP 書庫である。


確かめてみた:

  拡張子を「.xlsx」から「.zip」に変更して、

開くと、Explzh で中身が見られた。

「xl」フォルダの「worksheets」フォルダに、
「sheet1.xml」ファイルがあり、

これが、
「シート情報(Sheet1)」ダ。



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180414

Anaconda 学習:imageio パッケージ

2018-05-25 :  PCクリニック
Anaconda 5.0.1 : Windows 版 Python 2.7.14 ( 64bit 版 )
に、
含まれるパッケージ:「Packages for 64-bit Windows with Python 2.7
から、
デフォルトで入っているものを見ていた。

その中で気になったものに、

imageio 2.2.0 a Python library for reading and writing image data

があった。


リンク先を見ると、

   Imageio is a Python library that provides an easy interface to
  read and write a wide range of image data, including animated images,
  video, volumetric data, and scientific formats.
   It is cross-platform, runs on Python 2.7 and 3.4+,
  and is easy to install.
===
   Imageioはアニメーション画像、ビデオ、体積データ、科学的フォーマットを
  含む幅広い画像データを読み書きするための簡単なインターフェイスを提供する
  Pythonライブラリです。
   これはクロスプラットフォームで、Python 2.7と3.4+で動作し、
  インストールが簡単です。

  Example

  Here's a minimal example of how to use imageio. ・・・・・
  
>>> import imageio
>>> im = imageio.imread('imageio:chelsea.png') # read a standard image
>>> im.shape # im is a numpy array
(300, 451, 3)
>>> imageio.imwrite('~/chelsea-gray.jpg', im[:, :, 0])
  ・・・・・
  ・・・・・


それで、
ドキュメントは、“imageio 2.3.0 documentation”の、
Welcome to imageio's documentation!
ですね。

“Getting started”の、
Usage examples

には、

  Some of these examples use Visvis to visualize the image data,
  but one can also use Matplotlib to show the images.
===
  これらの例ではVisvisを使用して画像データを視覚化していますが、
  Matplotlibを使用して画像を表示することもできます。

とある。

visvisについては、
先々月(2018-03-26)の記事「Anaconda 学習:visvis 導入
の如くです。


そして、

  Read medical data (DICOM)

に、
# -----------------
import imageio

# Read as loose images
ims = imageio.mimread( 'x.dcm' )
とすることで、

  len(ims) == 1

の list で、

  Image( [[ , ], [ , ]], dtype=int16 )

  len(ims[0]) == 行数
  len(ims[0][0]) == 列数

が得られる。

このパッケージは、なかなかのもの?

もっと、学習しよう!



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180409

Anaconda 学習:日本語文字コードの扱い

2018-05-23 :  PCクリニック
先日(2018-05-11)の記事:
Anaconda 学習:pandas で、Excel ファイル・アクセス」等の、
pandasと、

前回(2018-05-21)の記事「Anaconda 学習:PyAutoGUI 補足事項」等の
PyAutoGUIとを使って、

Excel ファイルにある“タイトル”一覧を、
個別 Excel ファイルに埋め込んでいく処理プログラムを作っている。

主な処理は、

入力 Excel ファイルは、pandas で読み込んで、データフレームにする。
このデータフレームの行単位で、
出力 Excel ファイルに、PyAutoGUI で書き出す。

ここで、全てが1バイト文字(ANK文字)では問題ないが、
2バイト文字(日本語文字)を扱うとき、
文字バケが発生する。

pyautogui.typewrite(~) は、日本語文字には使えないので、
クリップボード経由で send することにした。


原因を究明する為に、

「python string encode」検索を行った。

“Qiita”の
Python2のstr/unicodeとencode/decode

  はじめに
  Python2の文字列はややこしい。

  用語
  そもそもPythonに限らず、文字コード関連の話はややこしい。
  これはたぶん用語の使い方が人によって違うから。
  ここではまつもとゆきひろ コードの世界に載ってる次の定義に従う。

  ・・・・・
  ・・・・・

  2種類の文字列
  Python2には文字列が2種類ある。
  ここではその2つを str文字列 および unicode文字列 と呼び、
  これらをまとめて 文字列 と呼ぶ。
  公式ドキュメントでも用語があまり統一されていないので、
  とりあえずこう呼ぶことにする。

  先に言っておくと、基本的にunicode文字列を使うべき。

  str文字列
  ・'...' リテラルで生成されるオブジェクト
  ・UTF-8, Shift-JISなどの符号化方式によって各文字を符号化して得られる
   バイトを並べたもの
  ・1文字が複数バイトで表現されることもある
  ・str文字列そのものは、符号化に使われた符号化方式の情報をもたない
  ・符号化方式を知るには基本的に片っ端から試すらしい
  ・対話環境で 'あいう' と入力すると、 \x で1バイトずつ区切られたバイト列が返る

  ・・・・・
  ・・・・・

  unicode文字列
  ・u'...' リテラルで生成されるオブジェクト
  ・文字コードUCS-2上で各文字に対応する整数を並べたもの
  ・文字に対応する整数はUCS-2によって決められるため、
   符号化方式の違いを意識する必要がない
  ・対話環境で u'あいう' と入力すると、\u で1文字ずつ区切られた整数列が返る

  ・・・・・
  ・・・・・


とか、
“Cassiopeiaの日記”の
Pythonと日本語表示と文字コード、unicode 、str 、utf-8 、shift-jis

   Pythonは使いやすい覚えやすい気持ちいいとまで言う人もいる。
  たしかにその通りだと思った。
  しかし、日本語を使おうとした時に急に気持ち良くなくなる。
  そう感じたのは僕だけではないはずだ。

   ということで今日の日記のネタはPythonと日本語となりました。

  (WindowsXPにココから“Python 2.5.1 Windows installer”を
  インストールした環境でテストしています。)

  ・まずは、あなたが書いたコードはutf-8で保存する。
   そして、そのコードの先頭には以下を記入する。
# -*- coding: utf-8 -*-
  ・・・・・
  ・・・・・


とかが見つかったので、
これらで学習した。

そこで、
encodeを使ったテストプログラムで確認した。
# -*- coding: utf-8 -*-
# ======================
import win32clipboard
import pandas as pd
import pyautogui as pa

def set_clipboard( text ):
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText( text )
win32clipboard.CloseClipboard()

def send_C_keys( text ): # clipboard 経由 Send
set_clipboard( text )
pa.hotkey( 'ctrl', 'v' )

# ----------------------

Mxls = u'hoge.xls' # 入力 Excel ファイル
Txls = u'boge.xls' # 出力 Excel ファイル

# ----------------------

df = pd.read_excel( Mxls, header=None )
MT = df.dropna(subset=[1]).reset_index(drop=True) # B列がNaNの行
nn = len(MT)

# ----------------------

pa.moveTo( 1600, 300 ); pa.click()

pa.keyDown( 'shift' ); pa.click( button='right' )
pa.keyUp( 'shift' ); pa.press( 'w' )

pa.typewrite( 'start '+Txls ); pa.press( 'enter' )
xls = False
while not xls:
xls = pa.getWindow( 'Microsoft Excel' )
xls.set_foreground()

ID = MT.iloc[0,1] # これでループ予定
id = ID[0:13] # 出力する文字列

pa.moveTo( 350, 600 ); pa.click( clicks=2 )
send_C_keys( id.encode('shift_jis') )
pa.press( 'enter' )
これで、いけそうだ。


  honyarara.encode('utf-8')
とか、
  konyarara.encode('shift_jis')

を適切に
使わないと文字バケを起こすのダった。


大変勉強になった。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180408,12

Anaconda 学習:PyAutoGUI 補足事項

2018-05-21 :  PCクリニック
前回(2018-05-18)の記事「Anaconda 学習:PyAutoGUI 導入」の最後に書いた、

  なお、
  この記事の最後に、

    更に複雑な自動化を試みるとpyautoguiだけでは物足りません。

     pyautoguiのみを使ったプログラムの一番のネックは、
    条件分岐ができないことにあります。
     今回の例では、ブラウザが起動して有効になるまでの時間が読めないため、
    長めにsleepせざるを得ないなどの不具合があります。
     イレギュラーが発生するとたちまち失敗してしまします。
    処理が成功したか、失敗したかのアンサーを受けることができないのです。

    それらに対応するためにはさらに本質的な自動化に踏み込まざるを得ません。
    WindowsAPIと組み合わせることで、より本質的な自動化ができそうなので、
    今度試してみます。

  とある。
  これは些か気になる事項ダ。


この内、
  ブラウザが起動して有効になるまでの時間が読めない
事に対処する方法が見つかった。

つまり、

  Cookbook example:start an app and get its window on Windows #139

を見つけた。

このコードでは、
###################

# wait for the window
while True:
window = pyautogui.getWindow("our window's title")
if window:
window.set_foreground()
break

# ...interact with the window using PyAutoGUI...

###################
といった処理がある。

つまり、
  pyautogui.getWindow
と云ったような関数がある。
と云うこと。

そこで、
「_window_win.py」の中を覗いてみた。

  def set_position(self, x, y, width, height):

  def move(self, x, y):

  def resize(self, width, height):

  def maximize(self):

  def set_foreground(self):

  def minimize(self):

  def restore(self):

  def close(self):

  def get_position(self):

  def getWindows():

  def getWindow(title, exact=False):

と云ったような関数が定義されている。


この内の getWindows 関数は、
2年前(2016-06-25)の記事「ウィンドウ・ハンドルの取得
に載せている、LuaJITのコードに相当する。

そして、
この関数を使っている getWindow 関数を使えば、
対象アプリの立ち上げを捕捉できる。

これで、
 ・Mouse Control Functions
 ・Keyboard Control Functions
に並ぶ、
 ・Window Control Functions(と云って良いのかな)
が揃っている。
と云うことになる。


PyAutoGUI 学習は続く。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180410

Anaconda 学習:PyAutoGUI 導入

2018-05-18 :  PCクリニック
前(2018-05-16)の記事「Anaconda 学習:PyAutoGUI パッケージ」に従って?
PyAutoGUIを導入することにした。

“Anaconda Cloud”では、
conda-forge / packages / pyautogui 0.9.36」から、

  conda install -c conda-forge pyautogui

でインストール。


初めに、
    conda は、4.4.9 だが、4.5.0 有るヨ。
と出たが、
取り敢えず先に進めた。


6ヶダウンロードして、

新規6ヶインストール。
そして、conda は、4.4.9 から、4.3.34 にDOWNGRADE

更に、インストールの終段で、
  「バッチアイルが見つかりません。」
と出たが、終わらせた。

結果、8ヶ追加されて、256 パッケージとなった:
  pip が2つ入っている。追加されたのは、9.0.3
  そして、tinycc も追加されている。


しかし、
先日(2018-05-02)の記事「Tiny C compiler:64-bit 版」の時、
tinycc を、pip でインストールしていた。
この時、リストを出力していなかった。

と云うことで、当時2ヶ追加されて 250 パッケージとなっていた?

今回は、6ヶ追加され、その結果 256 パッケージとなった。



ここで、

  conda update conda

で、4.5.0 にアップデートした。


テスト=動作確認は、・・・・・

前回記事の最後に載せた:
  PyAutoGui 使い方まとめ - サラリーマンがハッカーを真剣に目指す
の、最後に載っている、
  【関連記事】
  PyAutoGUIの具体的な使用例
にある、
PyAutoGUIでgoogle検索を自動化
に依ると、

対象アプリの起動は、
pyautogui.press('win') #windowsキーを押す。
time.sleep(1)
pyautogui.typewrite('microsoft edge')
pyautogui.press('enter') #ブラウザ起動
time.sleep(4)

pyautogui.moveTo(420, 420) #検索のテキストボックスにカーソル移動
pyautogui.click()
time.sleep(4)
pyautogui.typewrite('pyautogui')
pyautogui.press('enter')
と云った感じ?

そこで、<紙>流に1本作った:
# -*- coding: utf-8 -*-

import time as tm
import pyautogui as pa

pa.press( 'win' ) # windowsキーを押す。
pa.press( 'kanji' ) # 半角/全角キーを押す。
pa.typewrite( 'ichitarou' )
pa.press( 'space' ) # 全角に変換

tm.sleep(1)
pa.press( 'enter' ) # 変換確定
pa.press( 'enter' ) # 実行

tm.sleep(5) # 一太郎立ち上がり待ち

tm.sleep(3) # 一太郎に対する処理:ダミー

pa.hotkey( 'alt', 'F4' ) # 一太郎終了
と云うことで、
実行OK


なお、
(参照した)記事の最後に、

  更に複雑な自動化を試みるとpyautoguiだけでは物足りません。

   pyautoguiのみを使ったプログラムの一番のネックは、
  条件分岐ができないことにあります。
   今回の例では、ブラウザが起動して有効になるまでの時間が読めないため、
  長めにsleepせざるを得ないなどの不具合があります。
   イレギュラーが発生するとたちまち失敗してしまします。
  処理が成功したか、失敗したかのアンサーを受けることができないのです。

  それらに対応するためにはさらに本質的な自動化に踏み込まざるを得ません。
  WindowsAPIと組み合わせることで、より本質的な自動化ができそうなので、
  今度試してみます。

とある。
これは些か気になる事項ダ。


本格的な PyAutoGUI の学習ダ!


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180407

Anaconda 学習:PyAutoGUI パッケージ

2018-05-16 :  PCクリニック
当ブログ内、「sendkey」で検索すると、
 ・2016/11/06 : afxLua / winman は、Python の win32com に匹敵
 ・2016/08/30 : NYAOS:Execメソッド使用
 ・2016/08/28 : マウス・カーソルの制御(2)
 ・2016/08/26 : NYAOS で“メモ帳”操作(改)
 ・2016/08/24 : NYAOS で“メモ帳”操作
 ・2016/07/11 : ウィンドウ・ハンドル関連関数群定義
 ・2016/07/10 : キー入力エミュレーション関数群定義
 ・2016/06/25 : ウィンドウ・ハンドルの取得
 ・2016/06/20 : “SendKeys”もどき
 ・2016/06/17 : LuaCOM 代替:VBScript 利用
 ・2015/05/29 : Python 学習:pywinauto パッケージ
 ・2015/05/11 : Python 学習:win32com 関連サイト
 ・2015/05/09 : Python 学習:win32com で、notepad 操作
等々が見つかる。

改めて、Web検索を行ってみると、・・・・・


How to send SendKeys to Windows form in python script?
が見つかる。
使用するツールは、
pywinauto”ですか。


次に、「Python code to automate desktop activities in windows
が見つかった。

回答[14]では「Sikuli」で、“linux-64”版のみ。

回答[6]では「ctypes」ですか。

回答[5]では「Automa」と云う有償ソフト。

回答[0]は、
  You can use PyAutoGUI which provide a cross-platform
  Python way to perform GUI automation.

  Mouse Control
  Here is a simple code to move the mouse to the middle of the screen:
import pyautogui
screenWidth, screenHeight = pyautogui.size()
pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
   Related question: Controlling mouse with Python.

  Keyboard Control
  Example:
pyautogui.typewrite('Hello world!')                 # prints out "Hello world!" instantly
pyautogui.typewrite('Hello world!', interval=0.25) # prints out "Hello world!" with a quarter second delay after each character
  Message Box Functions
  It provides JavaScript-style message boxes.

  And other.

  For other suggestions, check: Python GUI automation library ・・・


この“PyAutoGUI”は、「conda」に“win-64”版がある。


それで、
ドキュメントサイトにある:
  The source is available on: https://github.com/asweigart/pyautogui
を見てみた。


取り敢えず、
  pyautogui フォルダにある9つのファイルの中から、
  ~_java.py、 ~_osx.py、 ~_x11.py の3ファイルを除く、
  6ファイルをコピー&ペースト
して、・・・・・

ドキュメントサイトの、
  Introduction / Purpose
にある、3行:
import pyautogui
screenWidth, screenHeight = pyautogui.size()
pyautogui.moveTo(screenWidth / 2, screenHeight / 2)
で実行したら、
上記6ファイルの内3つについて ~.pyc が出来た。


ドキュメントには、
 ・Keyboard Control Functions
 ・KEYBOARD_KEYS
等々が載っており、

  pyautogui.press( 'kanji' )

としたら、ひらがな入力モードになった。


日本語の利用例記事を捜した:

PyAutoGUIでマウス操作などのGUI操作する方法 - 白猫学生のブログ

GUI自動化ライブラリの使い方のまとめと利用例[Python] - もりとにーのブログ

PyAutoGui 使い方まとめ - サラリーマンがハッカーを真剣に目指す

と云った処かな?


PyAutoGUI の学習ダ! 頑張ろう?


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180406

Anaconda 学習:XML ファイル・アクセス

2018-05-14 :  PCクリニック
ふとしたことから、
XML ( eXtensible Markup Language ) 文書を扱うには?
と思い付き、

検索してみた。

“DrunkBoarder / yuki_B's web site”の、
pythonでxml処理(lxml使い方まとめ)
を見つけた。

  Pythonでxmlを取り扱う際には「lxml」を使うのが便利です.
  ただ使い方になれるまでは何かと引っかかる事も多くやっかいなので,
  ここで簡単にまとめておこうと思います.

  xmlを読み込む
  まず,xmlを読み込むには
from lxml import etree
root = etree.XML(string) #stringは文字列
  によりstringからXMLElementクラスのインスタンスを生成します.
  ・・・・・
  ・・・・・


なになに、lxmlを使う。

これ、Anaconda では、標準で入っていた。


早速使ってみようと、
何かサンプルデータを探した。

サンプル XML ファイル (books.xml)

  次の XML ファイルは、さまざまなサンプル全体で、・・・で使用されます。
  ・・・・・
  ・・・・・

これが良いかな?


そして、
Python 2.7.14 ドキュメント”の、
19.7. xml.etree.ElementTree - ElementTree XML API
と、“DrunkBoarder”を参考にして、
1本作ってみた:
# -*- coding: utf-8 -*-

f = open( 'books.xml' )
data1 = f.read() # ファイル全てを読んだデータ
f.close()

from lxml import etree
root = etree.XML( data1 ) # XMLElementクラスのインスタンス

for children in root:
print( children.tag )

print
for child in root[0]:
print( child.tag )
では?


実行結果:

最初の print ループでは、12ヶとも「book」

2番目の print ループでは、
 「author」
 「title」
 「genre」
 「price」
 「publish_date」
 「description」
とでた。


もっと、lxml を学習しよう。


本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180405

Anaconda 学習:pandas で、Excel ファイル・アクセス

2018-05-11 :  PCクリニック
前(2018-05-09)の記事「Anaconda 学習:Excel ファイル・アクセス」の後で、
更なる、日本語の記事を見つけた:
“Qiita”の、
pythonでexcelファイル処理まとめ

  はじめに

  pandasを使ってインデックスとカラムが整理されていない
  excelファイルの処理をする機会があったので、その方法をまとめます。
  excelを処理する方法としてopenpyxlなんてのもありますが、
  .xlsファイルを読み込めなかったり、
  結局DataFrameの方が処理しやすいのでpandasを使用しています。

  ・・・・・
  ・・・・・

とある。

つまり、
前回記事の openpyxl よりも、pandasを使用する方が良い?


“ねこゆきのメモ”の、
データフレーム/dataframeの要素へのアクセス方法。いくつか。

  要素へのアクセス方法いろいろ。
df[col]          #columnsで選択
df.loc[label] #index/columns(名)で選択
df.iloc[loc] #index/columns(番号)で選択
df[5: 10] #スライス(行のスライス)
df[bool_vec] #boolean vectorで選択
import pandas as pd
df = pd.read_csv(args[0]).fillna('').astype(str)
  ・・・・・
  ・・・・・

とか、

“pandas 0.22.0 documentation”の、
API Reference

  This page gives an overview of all public pandas objects,
  functions and methods.
  In general, all classes and functions exposed in the top-level
  pandas.* namespace are regarded as public.

===

  このページでは、すべてのパブリック pandas オブジェクト、
  機能、メソッドの概要を示します。
   一般に、トップレベルの pandas.* 名前空間に公開されている
  すべてのクラスと関数は public とみなされます。

とかを参考にして、

“Qiita”の“ファイル読み込み”のコードを流用。

# -*- coding: utf-8 -*-
# test_pandas_xls.py
import pandas as pd

file = pd.ExcelFile( u'テスト.xls' )
df = file.parse( 'Sheet1', header=None )
で、(旧?).xlsファイルが読み込めた。

空のセルはNanとなっており、
矩形(長方形)のデータフレーム(行列)ですね。

要素のアクセスは、

  A1 = df.iloc[ 0, 0 ]

とか、

  C11 = df.iloc[ 10, 2 ]

ですね。


それで、ファイル出力は?
# -*- coding: utf-8 -*-
# test_pd_out_xls.py
import pandas as pd

file2 = pd.ExcelFile( u'テスト.xls' )
df2 = file.parse( 'Sheet1', header=None )

df2.iloc[2,2] = u'追加:' + C11
df2.to_excel( u'テスト2.xls' )
としてみた。

此では駄目ダ。

   A列と、0(ゼロ)行に、
   余計なモノが付加される!!!

“これはイラナイ”よ、と指定するには???



本日はここまで。


Anaconda ( Python ) 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


180404
おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
05 | 2018/06 | 07
- - - - - 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
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク