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

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

2018-05-09 :  PCクリニック
当ブログ内、「Python Excel アクセス」で検索すると、
以下の5件が見つかる。
 ・2016/11/07 : Lua 学習: xls ファイル・アクセス
 ・2015/05/06 : Python 学習:win32com モジュール
 ・2014/06/19 : Python 学習:CSV ファイル・アクセス
 ・2014/06/17 : EXCEL で Python
 ・2014/06/16 : Python 学習: xls ファイル・アクセス

だが、
実質、一番古い、
4年前(2014-06-16)の記事「Python 学習: xls ファイル・アクセス」の、
1件だけ。

現在の“Anaconda”ではどうか?

Anaconda 5.0.1Windows 版 Python 2.7.14 ( 64bit 版 )
に含まれるパッケージ:
Packages for 64-bit Windows with Python 2.7
を見ると、

  openpyxl、xlsxwriter、xlrd/xlwt

などが、デフォルトでインストールされている。

「xlrd/xlwt」については、上記4年前の記事の如し。
「xlsxwriter」は、“xlsx”の書き出しモジュール?
「openpyxl」については、上記4年前の記事ではパスしていた。

そこで、「openpyxl」を学習した。

“openpyxl 2.5.0 documentation”の、
openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files

  Introduction

  Openpyxl is a Python library for reading and writing Excel 2010
  xlsx/xlsm/xltx/xltm files.

  It was born from lack of existing library to read/write natively
  from Python the Office Open XML format.

  All kudos to the PHPExcel team as openpyxl was
  initially based on PHPExcel.

===

  前書き

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

  これは、PythonからOffice Open XMLフォーマットをネイティブに
  読み書きする既存のライブラリがないことから生まれました。

  openpyxlとしてのPHPExcelチームへの功績は、
  当初はPHPExcelに基づいていました。


このサイトのSample code:を、(1箇所変更して)
「test_openpyxl.py」と云う名前で作った。
# -*- coding: utf-8 -*-

from openpyxl import Workbook
wb = Workbook()

# grab the active worksheet
ws = wb.active

# Data can be assigned directly to cells
ws['A1'] = '紙'

# Rows can also be appended
ws.append([1, 2, 3])

# Python types will automatically be converted
import datetime
ws['A2'] = datetime.datetime.now()

# Save the file
wb.save("sample.xlsx")
これで?
チャント、“sample.xlsx”ファイルが出来た。


日本語のサイトとしては、
“Qiita”の、
pythonのopenpyxlの使い方メモ
かな?


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180403

Anaconda 学習:tcc(libtcc)利用雛形

2018-05-07 :  PCクリニック
前回(2018-05-04)の記事:
tcc 学習:libtcc 利用法」で書いたコードを、
1月(2018-01-24)の記事「Anaconda 学習:見た目の前方参照(素直に)?
で書いた方式で書き直してみた。


# -*- coding: utf-8 -*-
# use_libtcc.py
import sys
import ctypes as ct

# ========== 処理本体 ==============
def main(): # =======
init_tcc()
tcc_comp( ST ) # ==== ST の定義は下記
Add = ct.CFUNCTYPE( ct.c_double, ct.c_int, ct.c_int ) \
( tcc.tcc_get_symbol( TCC, 'Add' ) )

z = Add( 2, 5 )
print z + Add( 10, 20 )

_=raw_input() # 開発期間中
end_tcc() # これ無くても良いかナ?
sys.exit() # 無くてもイイでしょう

#===== TCC サブ定義 =====
ST='''
double Add( int x, int y ){
return x + y;
}
'''

# =============================
def init_tcc():
global tcc, TCC
tcc = ct.CDLL( '../tcc/libtcc' ) # 開発期間中
TCC = tcc.tcc_new()
tcc.tcc_set_output_type( TCC, 1 )

def tcc_comp( CC ):
tcc.tcc_compile_string( TCC, CC )
tcc.tcc_relocate( TCC, ct.c_void_p(1) )

def end_tcc():
tcc.tcc_delete(TCC)

main() # if __name__ == '__main__': main() の代わり
こうでしょうか



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180403

tcc 学習:libtcc 利用法

2018-05-04 :  PCクリニック
libtcc 利用法の前に、

前回(2018-05-02)の記事「Tiny C compiler:64-bit 版」で原因が分からなかった、
64ビットモードコンパイルの件

原因が判明した。


環境変数pathのみに気を取られていた。
つまり、システム環境変数しか頭になかった。

実は、もう一つの方のkami のユーザー環境変数もあった。

現在のメインPCの初期設定時で、
「C_INCLUDE_PATH」「CPLUS_INCLUDE_PATH」「LIBRARY_PATH」
の3つの変数を定義していた。
これらは、“MinGW”用だった。


従って、今となっては、この3つを削除した。

これで、“tcc.exe”への Path を追加定義するだけで、
( 64ビットコンパイラを使っているので )
キチンと、64ビットモードの「.exe」や「.dll」が作られた。



さて、本題のlibtcc 利用

昨年(2017-05-24)の記事「Python & tcc 学習:libtcc 直接使用」で書いたコード:
# -*- coding: utf-8 -*-
# ---------- use_libtcc.py -----
import ctypes as ct
tcc = ct.CDLL( 'libtcc' )

ST=''' int Add( int x, int y ){
return x + y;
}
'''
relocate_auto = ct.c_void_p(1)

TCL = tcc.tcc_new();
z = tcc.tcc_set_output_type( TCL, 0 );

z = tcc.tcc_compile_string( TCL, ST );
tcc.tcc_relocate( TCL, relocate_auto )

Add_proto = ct.CFUNCTYPE( ct.c_int, ct.c_int, ct.c_int )
Add = Add_proto( tcc.tcc_get_symbol( TCL, 'Add' ) )
# ------------------

z = Add( 2, 5 )
print( z )

# ------------------
tcc.tcc_delete(TCL)
_=raw_input()
でOK?


ダメ???

“libtcc”フォルダにある、「libtcc.h」を見ると、
/*    ・・・・・
・・・・・ */
/* set output type. MUST BE CALLED before any compilation */
LIBTCCAPI int tcc_set_output_type(TCCState *s, int output_type);
#define TCC_OUTPUT_MEMORY 1 /* output will be run in memory (default) */
#define TCC_OUTPUT_EXE 2 /* executable file */
#define TCC_OUTPUT_DLL 3 /* dynamic library */
#define TCC_OUTPUT_OBJ 4 /* object file */
#define TCC_OUTPUT_PREPROCESS 5 /* only preprocess (used internally) */
/* ・・・・・
・・・・・ */
となっていた。

と云うことは、
上記コードの赤文字の行は、
z = tcc.tcc_set_output_type( TCL, 1 );
とすべきですネ。


これで、
64ビットモードでも、libtccが使える。


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180329

Tiny C compiler:64-bit 版

2018-05-02 :  PCクリニック
ふと思いついた:
64ビット版の tcc( Tiny C compiler )は無いのか?

そこで、
「tcc x64」と検索してみた。

The MASM Forum”の、
Tiny C compiler」が見つかった。


1番目は、June 01, 2013, 08:59:31 PM の、
  New release V0.9.26 on Feb 15, 2013 :

  http://bellard.org/tcc/


2番目は、June 02, 2013, 09:10:56 AM の、
  Thank you.
  I don't know how I missed it.
  I've been playing with .9.25 for ages. And 64bit too?

  Have you done any work with either the 32 or 64 bit??


そして、
3番目は、June 02, 2013, 05:05:55 PM の、
  Hi James,

  The 64-bit version is available :

  ・・・/releases/tinycc/tcc-0.9.26-win64-bin.zip

  I didn't play much with this compiler but ・・・


等とある。


3番目のリンク先では、
クリック即ダウンロードですネ。

だが、
1番目(のアナウンス)のリンク先を見たが、・・・
それらしいことが書いてない。

しかし、
この(本家サイト?)の、
Download”リンク先には、

 「tcc-0.9.27-win64-bin.zip」 478K  17-Dec-2017 08:27

もあった。


早速、
「tcc-0.9.27-win64-bin.zip」をダウンロードして、

作業場所(X)を作り、
そこに展開した:(X/tcc/ 以下5Dirと3ファイル)


テストで、1本作ってコンパイルしてみた。
昨年(2017-05-05)の記事「tcc 学習:同梱例題その他」にある、
「fib.c」に対して、

DOS窓で、
set path="./tcc"
tcc fib.c
として、fib.exe を作った。

だが、
fib  50
として、実行中の“プロセス”を見ると
何故???だか 32 ビットモードで動いている???


-----


原因究明の過程で、
tinycc 1.1」を見つけた。

  TinyCC compiler bundle for windows

   TinyCC (or tcc) is a small, fast C compiler capable of compiling
  python extensions that can be loaded as python modules or
  producing DLLs that can be loaded via ctypes.
   This version includes compilers for 32-bit and 64-bit Windows.
  MacOS and Linux are not supported in this release.

  Compiler version: 0.9.26 2013-02-16

  ・・・・・
  ・・・・・

===

  ウィンドウ用のTinyCCコンパイラバンドル

   TinyCC(またはtcc)は、pythonモジュールとしてロードするか、
  ctypes経由でロード可能なDLLを生成するPython拡張モジュールを
  コンパイルすることができる小型で高速なCコンパイラです。
   このバージョンには、32ビットおよび64ビットWindows用の
  コンパイラが含まれています。
  MacOSとLinuxはこのリリースではサポートされていません。

  コンパイラのバージョン:0.9.26 2013-02-16

  ・・・・・
  ・・・・・


こちらは、バージョン 0.9.26 と古いものだが、
取り敢えずダウンロードした。
「tinycc-1.1.tar.gz」 533KB  2017/11/22 付

で、conda では見つからないので、
pipでインストール:

  pip install tinycc

これで、1つ、Package が追加された。

ここで、
  pip は、9.0.1 を使っているが、pip 9.0.3 があるヨ。
とでた。

序でにアップグレードした:

  python -m pip install --upgrade pip

そして、
サンプル:fib.c
に対して、
import subprocess
from tinycc import TCC

subprocess.call( 'TCC fib.c' )
subprocess.call( 'fib 30' )
とやってみた。

でも、この .exe も、32bitモード!?


原因究明は続く。


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180328

Anaconda 学習:Python 2.7.14 日本語ドキュメント

2018-04-30 :  PCクリニック

Python のドキュメントについては、
例えば、
今年1月22日の記事「Anaconda 学習:leap year ( 閏年 ) 判定」では、

  ・・・・・
  ・・・・・
  Python > Python 2.7.14 documentation
   The Python Standard Library > 8. Data Types >
    8.2. calendar - General calendar-related functions

  または、

  Python > Japanese 3.6.5 > ドキュメント >
   ドキュメント > 8. データ型 >
    8.2. calendar - 一般的なカレンダーに関する関数群
  ・・・・・
  ・・・・・

の様に参照していた。

つまり、
正確を期すために、Python 2.7.14 ドキュメントは英語版(原本)を参照し、
一方、
理解し易い様に、Python 3.6.5 日本語(訳)ドキュメントを参照していた。

これは、日本語ドキュメントは、Python 3 の方にはあったが、
Python 2.7 には無かったから。


しかし、
偶然に、Python 2.7.14 日本語ドキュメントを見つけた。

これですね:
Python 2.7.14 ドキュメント



これからは、枕を高くして寝ることができる。
つまり、参照するドキュメントは1つダケで良い。


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180321

Python4PLY:Python parser for the Python language

2018-04-27 :  PCクリニック
前(2018-04-25)の記事:
Anaconda 学習:PLY ( Python Lex-Yacc )」に関連して、
python4ply tutorial」なるページを見つけた。

  What is it python4ply?

  python4ply is a Python parser for the Python language.
  The grammar definition uses PLY,
   a parser system for Python modelled on yacc/lex.
  The parser rules use the "compiler" module from the standard library
   to build a Python AST and to generate byte code for .pyc file.

  You might use python4ply to experiment with variations
   in the Python language.
  The PLY-based lexer and parser are much easier to change than
   the C implementation Python itself uses or even the ones written
   in Python which are part of the standard library.
  This tutorial walks through examples of how to make changes
   in different levels of the system.

  If you only want access to Python's normal AST, which includes
   line numbers and byte position for the code fragements,
   you should use the _ast module.

===

  python4ply とは?

  python4plyは、Python言語用のPythonパーサーです。
  文法の定義では、yacc / lexをモデルにしたPythonの
   パーサーシステムPLYを使用します。
  パーサー規則では、標準ライブラリの "compiler"モジュールを使用して
   Python ASTを構築し、.pycファイル用のバイトコードを生成します。

  python4plyを使用して、Python言語のバリエーションを
   試すことができます。
  PLYベースのレクサーとパーサは、Python自体のC実装よりも
   はるかに簡単です。標準ライブラリの一部であるPythonで
   書かれたものでもあります。
  このチュートリアルでは、システムのさまざまなレベルを変更する
   方法の例を説明します。

  Pythonの通常のAST(コードの断片の行番号とバイト位置を含む)
   にのみアクセスしたい場合は、_astモジュールを
   使用する必要があります。

  ・・・・・
  ・・・・・


これは面白い。

即行、python4ply に飛んだ。


  Perlの様な、
  アンダーバーで桁区切り表現が出来るようにする。

  それができることのアイデアを得るために、
  チュートリアルのいくつかの例を以下に示します。


とあった。


何はともあれ、ダウンロードした。

  Links
   ・Download python4ply-1.0.tar.gz

リンクから、
「python4ply-1.0.tar.gz」 250KB 2008/03/09 付

何処かに、
テストフォルダ hoge を作り、
そこに、python4ply-1.0 フォルダを作り
その中に展開した12ファイルを格納した。

それから、
hoge で、最初の tutorial ページの Getting started
owe_me.py:2行だけのファイルを作った。

DOS窓で、

  set path=%path%;./python4ply-1.0
  compile.py owe_me.py

とコンパイルして「owe_me.pyc」を作り、

  python -c "import owe_me"

で、実行。

これはOK。


続けて、
アンダーバーを追記した2行だけのファイル:owe_me.py を作り、

“python_lex.py”を2箇所変更して、置き換え、

DOS窓で、

  set path=%path%;./python4ply-1.0
  compile.py -e owe_me.py

で、コンパイル&実行 ( .pyc を残さない )

これもOK.



10年前の代物:python4ply だが、

もう少し学習してみよう。



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180318

Anaconda 学習:PLY ( Python Lex-Yacc )

2018-04-25 :  PCクリニック
ふと、Python でマクロ処理が出来ないのか?

と云うことで、

「Python macro statement」と検索してみた。

“stackoverflow”の
Implementation of a C pre-processor in Python or JavaScript?
が見つかった。これ、そのものズバリの質問。

で、
[13]の最終段では、

 The PLY (Python Lex and Yacc) tools include a cpp implemented in Python.

また、
回答[6]では、

 Check out PLY, an implementation of Lex and Yacc on Python which ・・・


面白そうなので、見に行ってみた。

GitHub の、
dabeaz/ply
  Python Lex-Yacc http://www.dabeaz.com/ply/index.html

で、このリンク先は:
PLY (Python Lex-Yacc)
ですね。


Anaconda では、どうなっているのか?

  ply 3.10 がデフォルトで入っている。

ドキュメントサイトは、

  PLY (Python Lex-Yacc)


そして、
最初のdabeaz/plyの example / calc フォルダにある、
「calc.py」プログラムをコピー&ペーストして、テスト実行。

動きますね。

変数が使え、括弧の処理もある、計算機(言語仕様)を自作する。


そこで、Lex、Yacc について学習。


元々は?
プログラミング言語を作る/yaccとlex

  Cでプログラミング言語の処理系を実装するのであれば、
  多くの場合、yaccとlexというツールを使います。

  実のところ、Cとyacc/lexで簡単なプログラミング言語を作る、
  というのは、以前、「C言語ヨタ話 」で書いた「 電卓を作ってみよう」
  の焼き直しになります。yaccとlexの説明もそちらに簡単に書いたので、
  そちらを見てください――と言いたいところですが、まあここでも軽く
  説明します。 内容的には重複、というかコピペしている部分もありますが。
   プログラミング言語の処理系は、通常、以下のような手順を取ります。

  字句解析
    ソースプログラムを、「字句(トークン)」の並びに分割する処理です。
  構文解析
    トークンの並びから、解析木を構築する処理です。

  この後、Cなどの機械語を吐くコンパイラや Javaのようなバイトコードを
  吐くコンパイラなら、 「コード生成」という処理が入りますが、
  今回は、解析木を作ったらそのまま実行しますから、
  コード生成の処理は入りません。
   たとえば、前述の以下のようなソースについて、

    ・・・・・
    ・・・・・

  字句解析を行なうと、以下のようなトークンに分割されます
  (この箱ひとつひとつがトークンです)。

    ・・・・・
    ・・・・・

  これを構文解析して解析木を構築すると、以下のようになります。

    ・・・・・
    ・・・・・

  字句解析を行なうプログラムのことを、
  レキシカルアナライザ(lexical analyzer) と呼びますが、
  これを自動生成してくれるのがlexです。

  また、前述のように、構文解析を行なうプログラムのことを
  パーサ(parser)と呼びます。
  yaccはこれを自動生成してくれるプログラムです。

  yacc, lexともに、それ専用の定義ファイルを入力とし、
  Cのソースを出力します。

  ・・・・・
  ・・・・・



Python のPLY については、

Python PLY - MyMemoWiki

  Pure Pythonによる、lex および yacc の実装

  PLYは、lex.py および yacc.py の 2つのモジュールを
   ply パッケージに含んでいる。

  2つのツールは協調して作業を行う

  lex.py
  モジュールは入力されたテキストを 正規表現により定義された
   字句のコレクションに分解する。
  次の有効なトークンを入力ストリームから返す、token()関数を、
   外部にインターフェースとして提供する。

  yacc.py
  自由文法として定義された言語の構文を評価する。
  LR で解析を行い、LALR(1) (デフォルト) もしくは
   SLR アルゴリズムでパースする。
  lex.py の token()を繰り返し呼び出し、トークンを参照し、
   文法ルールを呼び出す。
  出力は、大抵、抽象構文木(AST)となる。



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180316

Anaconda 学習:PyQt5 版コードできた

2018-04-23 :  PCクリニック
前(2018-04-20)の記事「Anaconda 学習:GUI アプリ開発は PyQt5 で」で、
PyQt4 から、PyQt5 へのコンバージョンポイントが見えてきたので、

3年前(2015-03-15)の記事「Python 学習:GUI アプリ は PyQt4 に決め」で書いた、

出力ファイル=変換結果 を書き直してみた。

以下再掲(要変更部分は赤文字):
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui, QtCore
class MainW( QtGui.QWidget ):
s=''; f=''
def __init__( self ):
super( MainW, self ).__init__()
self.initUI()
def initUI( self ):
self.Lbl1=QtGui.QLabel( 'File_Name:', self )
self.Lbl1.move( 10, 10 )
self.Lbl2=QtGui.QLabel( '?', self )
self.Lbl2.move( 75, 10 )
self.Ent1=QtGui.QLineEdit( '', self )
self.Ent1.move( 10, 40 )
self.Ent1.textChanged[str].connect( self.Ent1Changed )
self.Lbl3=QtGui.QLabel( '', self )
self.Lbl3.move( 10, 70 )
self.Btn1=QtGui.QPushButton( 'Go?', self )
self.Btn1.move( 40, 110 )
QtCore.QObject.connect( self.Btn1, QtCore.SIGNAL("clicked()"), self.Btn1Clicked )
self.setWindowTitle( <窓のタイトル> )
self.setGeometry( 200, 200, 600, 400 )
self.setAcceptDrops( True )
def dragEnterEvent( self, e ):
if e.mimeData().hasUrls(): e.accept()
else: e.ignore()
def dropEvent( self, e ):
files = [ unicode( u.toLocalFile() ) for u in e.mimeData().urls() ]
for ff in files:
self.f = ff
self.Lbl2.setText( ff )
self.Lbl2.adjustSize()

def Ent1Changed( self, text ):
self.s = text

def Btn1Clicked( self ):
self.Lbl3.setText( self.s + self.f )
self.Lbl3.adjustSize()

app=QtGui.QApplication( sys.argv )
w=MainW(); w.show()
sys.exit( app.exec_() )
これに対して、赤文字部分を以下の様に変更:
# -*- coding: utf-8 -*-
import sys
from PyQt5 import QtWidgets
class MainW( QtWidgets.QWidget ):
sss=''; f=''
def __init__( self ):
super( MainW, self ).__init__()
self.initUI()
def initUI( self ):
self.Lbl1=QtWidgets.QLabel( 'File_Name:', self )
self.Lbl1.move( 10, 10 )
self.Lbl2=QtWidgets.QLabel( '?', self )
self.Lbl2.move( 75, 10 )
self.Ent1=QtWidgets.QLineEdit( '', self )
self.Ent1.move( 10, 40 )
self.Ent1.textChanged[str].connect( self.Ent1Changed )
self.Lbl3=QtWidgets.QLabel( '', self )
self.Lbl3.move( 10, 70 )
self.Btn1=QtWidgets.QPushButton( 'Go?', self )
self.Btn1.move( 40, 110 )
self.Btn1.clicked.connect( self.Btn1Clicked )
self.setWindowTitle( <窓のタイトル> )
self.setGeometry( 200, 200, 600, 400 )
self.setAcceptDrops( True )
def dragEnterEvent( self, e ):
if e.mimeData().hasUrls(): e.accept()
else: e.ignore()
def dropEvent( self, e ):
files = [ unicode( u.toLocalFile() ) for u in e.mimeData().urls() ]
for ff in files:
self.f = ff
self.Lbl2.setText( ff ) ### ; print ff
self.Lbl2.adjustSize()

def Ent1Changed( self, text ):
self.sss = text

def Btn1Clicked( self ):
self.Lbl3.setText( self.sss + self.f )
self.Lbl3.adjustSize()

app=QtWidgets.QApplication( sys.argv )
w=MainW(); w.show()
sys.exit( app.exec_() )
と云うことで、移植できた。



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180314

Anaconda 学習:GUI アプリ開発は PyQt5 で

2018-04-20 :  PCクリニック
前(2018-04-18)の記事「Anaconda 学習:GUI アプリ開発は Tkinter で?」で、
一旦は、決めていた。

がやはり、温故知新で、・・・・・

過去記事:
Python 学習:wxPython で GUI アプリ」2015-03-09 付

Python 学習:PyQt4 で GUI アプリ」2015-03-12 付

Python 学習:GUI アプリ は PyQt4 に決め」2015-03-15 付

の後追い。

取り敢えず、
3年前(2015-07-09)の記事「Python 学習:PyQt4 で GUI アプリ(2)」で
  ・・・・・
  ・・・・・
  以下のようなテキスト・ファイルを入力として、
  “PyQt4”のプロフラムを出力する。
  コンバータを作った。
  /Lbl  Lbl1, 'File_Name:', ( 10, 10 )
/Lbl Lbl2, '?', ( 75, 10 )

/Ent Ent1, '', ( 10, 40 ), Ent1Changed
/Lbl Lbl3, '', ( 10, 70 )
/Btn Btn1, 'Go?', ( 40, 110 ), Btn1Clicked
  ・・・・・
  ・・・・・
と書いているコンバータを引っ張り出してきた。


だが、当時は「PyQt4」だったが、
今の Anaconda に含まれている“pyqt”は「PyQt5」ダ。

「Differences Between PyQt4 and PyQt5」の抄訳 - 明日から本気だす
  PyQt使ってみたかったけど、ver.4とver.5で違いが結構あるぽいので
  Differences Between PyQt4 and PyQt5 - PyQt 5.2.1 Reference Guide
  を抄訳してみた。

  なにか変なところがあったら教えてくだちい。

  PyQt4とPyQt5の違い
  PyQt5とPyQt4は、互換性がありません(が、PyQt4からPyQt5へのアプリ
  ケーションの移植は難しいことではないと言えます)。
  このセクションでは、PyQt5とPyQt4の間の主要な違いについて説明します。

  ・・・・・
  ・・・・・

ということで、若干修正が必要ダ。


それで、
【PythonでGUI】PyQt5 -ドラッグ&ドロップ- - Qiita
のコードで学習した。
(修正点が分かった?)

####################
# QPushButtonを継承
class Button(QPushButton):

def __init__(self, title, parent):
super().__init__(title, parent)
の「super().__init・・・」の部分を、
####################
# QPushButtonを継承
class Button(QPushButton):

def __init__(self, title, parent):
super(Button, self).__init__(title, parent)
の様に変更。
そして、
####################
class Example(QWidget):

def __init__(self):
super().__init__()
の「super().__init__()」の部分を、
####################
class Example(QWidget):

def __init__(self, parent=None ):
super(Example, self).__init__(parent)
の様に変更。

これで、動いた。


そうすると、
昔のコンバータは、この様なソースを生成できるように修正する。

最初の
from PyQt5.QtWidgets import (QPushButton, QWidget, 
QLineEdit, QApplication)
の部分も修正が必要だナ。


更なる学習が必要ダ。


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180312

Anaconda 学習:GUI アプリ開発は Tkinter で?

2018-04-18 :  PCクリニック
先日(2018-04-11)の記事「kivy 学習:Kv ファイルを別途用意しない方法」で、

更なる、学習をしていたが、・・・・・


どうも、「kivy」についてはまだまだ学習が必要ダ。

なので、
昔の「Tkinter」に戻ってみた。
参照記事:「Tkinter:ドラッグ&ドロップ対応法


しかし、問題が1つあった。

今後使う Python は、Anaconda で しかも 64bit 版


これは簡単に、行けるのか?

「Python GUI ドラッグ&ドロップ」検索で、
1つ見つけた:
TkinterでDnDを実装するには(64bit Window版)

  TkinterでエクスプローラからDnDでファイルを受け取るアプリを作成
  してみようと思いました。

  参考サイトの内容を元にコードを作成してみましたが、残念なことに
  64bit Windows 10 ではうまく動作しません。

  Python+TkでD&D -MasaHeroの日記より
  http://d.hatena.ne.jp/MasaHero/20111201/p1

  ctypesを使って、WindowsのDDLを直接操作しています。
  32bit Windows7 にて、python 2.7 と 3.4で動作を確認しています。

  これを64bit Windowsでも動作させるにはどのように修正すればよいでしょうか?


これで学習して、
<紙>流コードを作った:
# -*- coding: utf-8 -*-

import Tkinter as tk
import ctypes, sys
from ctypes import c_long, WINFUNCTYPE
from ctypes.wintypes import HWND, UINT, WPARAM, LPARAM

WM_DROPFILES = 0x0233
GWL_WNDPROC = -4
FS_ENCODING = sys.getfilesystemencoding()
DragAcceptFiles = ctypes.windll.shell32.DragAcceptFiles
DragQueryFile = ctypes.windll.shell32.DragQueryFile
DragQueryFile.argtypes = [ ctypes.c_void_p, UINT, ctypes.c_void_p, UINT ]
DragFinish = ctypes.windll.shell32.DragFinish
DragFinish.argtypes = [ ctypes.c_void_p ]
CallWindowProc = ctypes.windll.user32.CallWindowProcW
CallWindowProc.argtypes = [ ctypes.c_void_p, HWND , UINT, WPARAM, LPARAM ]
try: SetWindowLong = ctypes.windll.user32.SetWindowLongPtrW
except AttributeError: SetWindowLong = ctypes.windll.user32.SetWindowLongW

class TkApp(tk.Frame):
dnd_interval = 600

def __init__(self, *args, **kargs):
tk.Frame.__init__(self, *args, **kargs)
self.createwidget()
self.dropnames = []
win = args[0] if args else self._root()
win = self.tw

def drop_check():
if self.dropnames:
fns = self.dropnames
self.dropnames = []
self.dnd_notify(fns)
win.after(self.dnd_interval, drop_check)

@WINFUNCTYPE(c_long, HWND, UINT, WPARAM, LPARAM)
def replace_win_proc(hwnd, msg, wp, lp):
u"""D&D用のコールバック
ファイルのドラッグアンドドロップイベント(WM_DROPFILES)を検出して、
ドロップされたファイル名を保持する。
ここでウィンドウ(tk)を使用するとハングアップするのでデータ保存だけ行う。
"""
if msg == WM_DROPFILES:
nf = DragQueryFile(wp, -1, None, 0)
buf = ctypes.c_buffer(260)
fns = [ buf.value.decode(FS_ENCODING) for nn in range(nf) \
if DragQueryFile(wp, nn , buf, ctypes.sizeof(buf)) ]
DragFinish(wp)
self.dropnames.extend(fns)
print("%s dnd_notify: %s" % (self, hwnd))
return CallWindowProc(self.org_proc, hwnd, msg, wp, lp)

def dnd_setup():
"Windowsのイベント処理のフックを定義する"
hwnd = win.winfo_id()
DragAcceptFiles(hwnd, True)

self.win_proc = replace_win_proc
self.org_proc = SetWindowLong(hwnd, GWL_WNDPROC, self.win_proc)

win.after_idle(drop_check)
print("%s dnd_setup: %s,%s" % (self, hwnd, self.org_proc))

self.pack(fill='both', expand=1)
win.after_idle(dnd_setup)

def createwidget(self):
tw = tk.Text(self, width=30,height=16)
tw.pack(fill='both', expand=1)
self.tw = tw

def dnd_notify(self, filenames):
for nn in filenames:
self.tw.insert('end',"%s\n" % nn)

if __name__ == "__main__":
a = TkApp()
if 0: TkApp(tk.Toplevel()) # 複数ウィンドウに対応
a.mainloop()
これで動いた。


よく分からないが、
これで行こうかナ?



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180311

Anaconda 学習:numpy.polyfit は使わない?

2018-04-16 :  PCクリニック
先月(2018-03-02)の記事「Anaconda 学習:Fitting なら curve_fit」で、

  ・・・・・
  ・・・・・
  Numpypolyfit では、
  一部の係数を固定(多分ゼロに)することが出来ない?
  ・・・・・
  ・・・・・

と書いている。

しかし、なんとか成らないのか?・・・


と云うことで、(若干)学習してみた。

Constrained Polynomial Regression
に辿り着いた。

でも、これは“MATLAB”のお話しなので、
「Constrained Polynomial Regression」で検索してみた。


“Stack Overflow”の
How to do a polynomial fit with fixed points
が見つかったが、
これは、Constrainedと云っても、係数の制約(固定値)ではなくて、
通過点の指定(指定点を通過する(曲)線を求める)と云うものですね。


そこで、
「Constrained Polynomial Regression Python」として検索。

“Stack Overflow”の
Constrained Linear Regression in Python
があった。

これは期待できる。


回答[8]はリンク切れか、scipy.optimize.nnls

回答[9]は、scikit-learn

回答[3]は、scipy.optimize.leastsq with bound constraints


どうも、
係数に関する重み付けではなくて、
Y値(観測値)に対する重み付けの様な?

やはり、ダメ


前回記事の結論通り:

  Fitting なら curve_fit で決まりだナ。



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180309

Anaconda 学習:Gensim って何?

2018-04-13 :  PCクリニック
ひょんなことから、
“情報処理学会 研究報告”の、
「人工知能技術を用いた情報処理学会・・・」
を見ていたら、

  Python の Gensim = Doc2Vec
とか、
  Word2Vec
とか、
  MeCab ( 単語分割 )
  TensorBoard ( ビジュアライザ )

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


些か気になったので、調べてみた。


「Python Gensim」検索で、

scikit-learnとgensimでニュース記事を分類する - Qiita
が見つかった。

記事の中には、

  ・・・・・
  ・・・・・
  ということは、特徴語を決定する必要がある。
  このあたりは、Gensimというライブラリが良いそうなので、それ使います。

  あと、日本語文章の特徴語を抽出するということは、
  その前に形態素解析をする必要がある。これはMeCabを使えば良いでしょう。

  手順をまとめると、
   1. 記事からMeCabで単語だけ切り出して記事を単語リストに変換
   2. 単語リスト群から、Gensimで特徴語の辞書を定義
   3. BoWの要領で各文章に特徴語が何個あるかカウントして特徴ベクトル作る
   4. この特徴ベクトルで学習。
   5. 未知の文章も、3の方法で特徴ベクトルを作れば、
    分類器にかけてカテゴリを当てられるはず

  という感じだと思います。

と載っており、

これも気になった用語「ランダムフォレスト」も載っていた。


この“Gensim”はデフォルトでは入っていないが、
Conda Cloud には、
anaconda / packages / gensim 3.4.0
があった。



それから、
「ランダムフォレスト」検索では、

決定木とランダムフォレスト - Qiita
が見つかる。


この記事のコメントに、

  Udemyで「実践Pythonデータサイエンス」を公開している辻と申します。
  ・・・・・
  ・・・・・

とある。


序でに、
「実践Pythonデータサイエンス」検索では、

Udemyの「実践 Python データサイエンス」を受けてみた - Qiita
が見つかる。

この記事の中では、

  データの可視化
  ・Seabornの利用
   Seabornは非常にすぐれたデータの可視化用ライブラリで、
   色を簡単に変えることができるという特徴もあります。
   ヒストグラム、カーネル密度推定(簡単に言うとなめらかなヒストグラム)
   ボックスプロット(箱ひげ図)、ヴァイオリンプロット、回帰直線
   などを表示させることができます。

と云った記述がある。


さらに、
「Seaborn」検索では、

pythonで美しいグラフ描画 - seabornを使えば・・・
が見つかる。

  ・・・・・
  ・・・・・
  この記事ではMatplotlibの機能をより美しく、またより簡単に実現するための
  ラッパー的存在である、「Seaborn」の使い方を取り上げます。

と云うこと。


Pandas、 Seaborn、 ggplot、 Bokeh、 pygal、 Plotly

の6つについての記事から、

Matplotlib と、Seaborn との比較?


あっちこっちと、手を広げ過ぎたようで、
取り留めの無いことになってしまった。


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180302

kivy 学習:Kv ファイルを別途用意しない方法

2018-04-11 :  PCクリニック
先日(2018-03-23)の記事「Anaconda 学習:kivy 導入」では、
メインの“kivy_GUI_sample.py”ファイルと、
レイアウトを定義した、Kvファイル:test.kv ファイル
の2つのファイルが必要だった。

これを、test.kv ファイルの中身を移して、
メインの“kivy_GUI_sample.py”ファイル1つにしたい。

あれこれ学習して、分かったのは、

  class TextWidget(Widget):

を定義する前に、

1) from kivy.lang import Builder

  を定義する。


2) それに続いて、

  Builder.load_string( ''' ~~~ ''' ) を追加する。


ここで、 ~~~ 部分は、
「test.kv」から1行目(TextWidget:)を除いたもの。


と、
これで動いた様に見えていたが、・・・・・


先日(2018-04-09)の「Anaconda 32 ビット版導入」で書いた
時に、この1ファイルだけで確認しようとしたら、

  Kv ファイルが見つからない

と云ったようなエラーが発生???



さんざん悩んだ挙げ句、原因が判明した。

3) 最終段の“class TestApp(App):”の中身も変更が必要だった。

   def build(self):
self.title = 'greeting'
return TextWidget()
の様に。



結果、1ファイル化したコードは:
# -*- coding: utf-8 -*-

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import StringProperty, ListProperty

from kivy.lang import Builder

Builder.load_string('''
<TextWidget>:
BoxLayout:
orientation: 'vertical'
size: root.size

# ラベル
Label:
size_hint_y: 0.7
id: label1
font_size: 68
text: root.text
color: root.color

BoxLayout:
size_hint_y: 0.3
padding: 20,30,20, 10
Button:
id: button1
text: "morning"
font_size: 68
on_press: root.buttonClicked() # ボタンをクリックした時

Button:
id: button2
text: "day"
font_size: 68
on_press: root.buttonClicked2() # ボタンをクリックした時

Button:
id: button3
text: "night"
font_size: 68
on_press: root.buttonClicked3() # ボタンをクリックした時
''')

class TextWidget(Widget):
text = StringProperty()
color = ListProperty([1,1,1,1])

def __init__(self, **kwargs):
super(TextWidget, self).__init__(**kwargs)
self.text = 'start'

def buttonClicked(self):
self.text = 'Good morning'
self.color = [1, 0, 0 , 1]

def buttonClicked2(self):
self.text = 'Hello'
self.color = [0, 1, 0 , 1 ]

def buttonClicked3(self):
self.text = 'Good evening'
self.color = [0, 0, 1 , 1 ]

class TestApp(App):
def build(self):
self.title = 'greeting'
return TextWidget()

TestApp().run()
でした。



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180222,0310

Anaconda 32 ビット版導入

2018-04-09 :  PCクリニック
手元にあるノートPC:Windwos 10 32-bit 版
に、Anaconda を導入することにした。

今年初め(2018-01-05)の記事「Python は、Anaconda x64 で
と同様に、

  Anaconda
  即ち、「Anaconda 5.0.1 For Windows Installer」
  の、
    Python 2.7 version
  から、
    32-Bit Graphical Installer (420 MB)
  をダウンロードした。

  つまり、
  「Anaconda2-5.0.1-Windows-x86.exe」 2017-10-15 付


そして、
先日(2018-04-04)纏めた記事「Anaconda セットアップ手順:まとめ
の手順に沿って、

・ レジストリへの登録

及び、追加モジュールのインストール。

OpenCV3

Pydicom

Plotly

visvis

easyGUI

ここまでで、
初期インストールでは、237モジュールだったが、
243に増えている。


ここで、
conda では、kivy の Win-32 版が見つけられなかった。


なので、
pip を使ってインストール。

(1)pip の upgrade:これで、1モジュール追加

(2)kivy の dependency のインストール:4モジュール追加

(3)そして、kivy のインストール:2モジュール追加


結果、250 モジュールになった。


此処まで来て、kivy が動かない???


探し当てた:
Kivy does not detect OpenGL 2.0

これの回答[11]
にあるコードの、
# add the following 2 lines to solve OpenGL 2.0 bug
from kivy import Config
Config.set('graphics', 'multisamples', '0')
この2行を追加したら、動いた。


何故だか、OpenGL 2.0 のバグに嵌った?


本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180308

Anaconda 学習:numpy.std 標準偏差算出

2018-04-06 :  PCクリニック
標準偏差算出関数をド忘れして、
SciPy.orgの「SciPy.org
から、
SciPy library
を探しまくって、
Statistical functions (scipy.stats)」の、
scipy.stats.tstd
しか無いと思い込んで、
一応コーディングは完了していた。


だが、

  Compute the trimmed sample standard deviation.

===

  トリムされた標本標準偏差を計算します。


との記述が、些か気になっていた。


----------


ふと、気が付いた。


NumPy」に有るのではないか?

ありましたネ。


ドキュメント:「numpy.std」では、

  Compute the standard deviation along the specified axis.

===

  指定された軸に沿った標準偏差を計算します。


とある。


これで、十分でした。


オソマツ。



本日はここまで。


Anaconda ( Python ) 学習は続く。


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


180227,0304
おきてがみ/blogram
blogram投票ボタン



おきてがみ

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

<紙>

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

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


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

Google Analytics
ブックマーク