アフィリエイト広告を利用しています

広告

この広告は30日以上更新がないブログに表示されております。
新規記事の投稿を行うことで、非表示にすることが可能です。
posted by fanblog

2016年08月21日

WinpythonでAutocad

前に下記のサイト
>エクセルでAutoCADを自動作図させる方法
http://excelvba.info/index.html
を参考にVBAでAutocadを自動作図するよう
プログラミングした。
(下記の日記にも少し書いた)
>脱線につぐ脱線
https://fanblogs.jp/mountain4101/archive/37/0?1471709775

ただ、VBAをやめてPythonというかWinpythonに切り替えるつもりなので
WinpythonでAutocadの自動作図ができるよう
コードを書き換えようと思う。

で、本日試行錯誤の素人コーディングの成果はこんな感じ。
(起動しているAutocadに線を1本書くプログラム)

Autocad1.JPG


何をしているかというと、
acadcommand()関数とline1関数で
作図する命令一式を記載したacadcode.scrというテキストファイルを作成し、
送信することで作図している。

acadcode.scrファイルの中身は単純で
下記のような感じ。

Autocad3.JPG

で、test.pyファイルをダブルクリックすると
Autocad上に以下の写真のように線が引かれる。
ちゃんとレイヤも指定して。

Autocad2.JPG

たかが1本の線。
だけど、これで円、長方形、文字もレイヤを指定して書ける。
組み合わせれば複雑な図形も一瞬で好きな大きさで書けるようになる。

応用としては
計算プログラムから座標等を吐き出せば、
全自動で図面が書けるはず。
エクセル等で計算した際に、
openpyxlで寸法を読み込み、
一緒にcad図面を吐き出すなんてこともできるだろう。

便利な作図プログラムを沢山作りたい。



posted by iyoder at 01:13 | Comment(0) | TrackBack(0) | プログラム

2016年08月18日

winpythonにしよう

pythonを使い始めたが、
このまま知識をつけていっても
結局今のsurface proでしか使えないものが
できあがるのではないか?
cx_freezeでexe化するしかないんだけど。

そこで今のpythonをやめて
winpythonに変えようと思う。
レジストリに依存しないポータブルなpythonらしい。
USBに入れて持ち運べるようだ。
科学技術計算に必要なモジュールが
最初から入っているようだ。

調べてみると下記のサイトにインストールの仕方が書いてある。
>ねこゆきのメモ
のインストール。
http://nekoyukimmm.hatenablog.com/entry/2015/03/02/095750

レジストリの設定(ボタン1つクリック)と
環境変数のPathの設定(2つ)をしてるから
違うPCにコピーして使おうとしたら
この2つだけはしないといかんのだろうな。


※(8/21追記)
 上記サイトのまま環境変数のPath設定したら
 python.exeにPathが通ってなかったので
 「C:\WinPython-64bit-3.4.3.6\python-3.4.3.amd64」
 もPathに加えた。→ダブルクリックで.pyファイルが実行できるようになった。


ということで
標準のpythonをアンインストール。

そしてwinpythonにはSpyderと呼ばれる開発環境があるようなので
テキストエディタとして使っていた
SublimeTextもアンインストール。

で先ほどのサイトに従い
winpythonの3.4.3.6をインストール。
Register Distributionをクリック。
環境変数のPathも設定。

winpythonはpipも使えるらしい。
インストールしたフォルダ内に入っている
WinPython Command Prompt.exeから
winpython用のコマンドプロンプトを起動。

pip install openpyxl

あれ、、エラー。なんでだろ。


。。。そして2日が経過。

もう一度pip install openpyxlしてみると
なぜかメッセージが変わってる。
pipが最新じゃない、とさ。
環境変数変更後にパソコンを再起動したからかな。
まあいいや。
pipを最新にし、openpyxlも無事インストール完了。


そして試しにtest1というファイルから数値を読み取り
値を変えて別のエクセルファイルtest2を吐き出してみる。


test1はこんな感じ。

excel操作.JPG


こんな感じのコードを
書いてみる。

excel操作3.JPG


そして実行。
吐き出されるtext2.xlsxはこんな感じ。

excel操作2.JPG


よし。
うまくいった。
はじめは簡単なことしかできない。
が、一度プログラミングしたことは2度と自分でしなくていい。
仕事効率化には程遠い。
が、一歩一歩できること増やそう。

そうだな、、次はpythonでautocad操作してみたいな。


posted by iyoder at 17:27 | Comment(0) | TrackBack(1) | プログラム

2016年08月13日

pythonでエクセル

とある理由で我が愛機Surface Proを1日操作する時間が生じた。
最近はめっきりネット検索とYou Tubeしか使っていない。
なぜなら
4月から7月末までのダイエットによる山登りと皇居ラン、糖質制限、
ワンダーコアスマート、シックスパッドの購入・継続使用
7月末からのPokemon Goによるウォーキング
と興味・関心が体を動かすことに移ってしまっていたのだ。

2016-05-01 22.06.52.jpg




2016-06-05 20.20.16.jpg



結果、4月頭に78kgにまで膨らんだ体重は7月末で64kgまで減り、
多少米を食べ始めた今でも65sである。
ちなみにPokemon Go は現在122種類。(8/13現在)
あと20種類でコンプリートだが、10kmたまごが全然でないので、
たぶん無理そう。
と余談はここまで。

強制的にパソコンに向かう時間が生じたので
pythonでエクセルを操作してみることにした。
仕事効率化の第1歩である。
vbaではある程度の計算はできるが、
pythonに乗り換えたい。意味があるかは別として、
新しいことにチャレンジしたい。

ということで早速、下記のサイトを参考に
pip install xlwt
でxlwtをインストール

>python -ism
http://www.python-izm.com/contents/external/xlwt.shtml
>Excel書き込み (xlwt)

>python
>xlwt 1.1.2
https://pypi.python.org/pypi/xlwt

で上記pythonの公式サイトにあった例題を打ってみる。

xlwt.JPG

そして実行。

xlwt2.JPG

すごい。
ほんとにvbaみたいだ。
(ただ、列幅の自動調整がされてないのでそこだけ手動)

セルに値さえ打ち込んだり、
値をpython側に読み込めさえできれば
内部計算自体はすべてpythonで行えばよいわけだ。

だけど、
使ってみて1点気づいた。
保存するときの拡張子がxlsなので
試しにxlsxにしてみたら
吐き出されたxlsxファイルを開こうとすると
エラーで開かない。。。
今仕事で使っているファイルはすべてxlsxだから、
なんとかならないかなあ。

調べてみると
下記のサイトにまとめられていた。
>My Future Sight for Past
>PythonのExcelファイル(xls/xlsx)の読み書きモジュールまとめ
http://myfuturesightforpast.blogspot.jp/2014/05/pythonexcelxlsxlsx.html

ふむふむ、
やはりxlwtはxlsxへの書き込みが
できないんだな。
残念。

よくわからないけど、グラフを使わないなら
とりあえずPyOpenXLでいいんじゃないかなあ。
グラフ化より計算がメインだし。

ということで
pip install pyopenxl
と打ってみる。。。

あれ?

エラー。。。(涙)

調べるがよくわからない。
そしてPyOpenXLと書いてあるサイトと
openpyxlと書いてあるサイトと
両方がごちゃ混ぜになって書かれているサイトがある。。

諦めて、
pip install openpyxl
と打ってみる。
そしてopenpyxlがインストールされたのであった。
(そう、自分はopenpyxlと向き合っていくしかない。合ってるのかだろうか。。。)

心配していてもしょうがないので
いざ実践。
下記のopenpyxlの公式サイトにある
例題をそのまま打ってみる。

>openpyxl
https://openpyxl.readthedocs.io/en/default/

openpyxl.JPG

そして実行。
お、xlsxファイルが隣に吐き出された。
(すごいなあ、と思うのは、
エクセルのプログラムを立ち上げなくてもxlsxファイルが隣に吐き出されるところだ。
テキストファイルと同じ感じで吐き出してくれる)

openpyxl3.JPG

そして開くときちんと打ち込まれている。
(列幅の自動調整がされてないのでそこは手動)

これはほんとに計算だけならvbaの代わりになる。
よしよし。
posted by iyoder at 13:26 | Comment(0) | TrackBack(0) | プログラム

2016年05月05日

ホップフィールドネットワーク

仕事とは関係ないが、
5年後、10年後を考えた時に、
人工知能がありとあらゆるところで使われ、
今では想像もつかない世界になっているかと思うと
ワクワクしてくる。

タレント兼エンジニアの池澤あやかさんも
ディープラーニングの勉強を始めたらしい。
>Hatena Blog learning ikeay net 文系エンジニアだけどAIを勉強してみる
http://learning.ikeay.net/entry/2016/04/25/090016

ディープラーニングとは
脳の神経細胞を行列による数式で模したニューラルネットワークというものを
何個も多層に重ねた構造にしたもので、
勉強用の学習データをたくさん覚えさせる(機械学習させる)と
人間をはるかに超える精度で画像認識とかしてくれるというもの。

そう、自分も池澤あやかさん同様、ディープラーニングを勉強したい。
といっても、ディープラーニングを実用レベルで使うには、
世界最高レベルの高価なマシンで何日もかかる行列計算をしなければいけない。
だから、今はお遊びレベルのことしかできないのかもしれない。
ただ、仕組みを知っておきたいのだ。

ということで、
まずはディープラーニングの前に、
ニューラルネットワークを勉強したい。
で、2016年3月7日に
ちょうどいい本が発売された。

「はじめての人工知能 Excelで体験しながら学ぶAI」淺井登 著 (翔泳社)

image.jpeg



自分はエクセルが得意。
そしてエクセルを使うのが好き。
プログラミングも好きだが、
エクセルで組めるから(手順をきちんと理解しているので)
同じ計算をプログラミングもできる、と思っている。
自分のことはさておき、

この「はじめての人工知能」は
他の本と違ってわかりやすい。

まだニューラルネットワークの記載部分の72ページ目までしか読んでいないが、
エクセルの例題ファイルがダウンロードできて、
まずは(仕組みをわからないまま)書いてある手順通りに
@番から順に打ち込んだり、ボタンを押したりしていくと、
いつの間にか多少歪んだアルファベットのAのドット絵から
活字のAが想起される。

で、その例題を2つ行った後、
理論的な行列演算の説明が分かりやすく書いてある。

人工知能の他の本(理論的なことを書いてある本)は
この本と違って、初心者に読む勇気をなくさせるような書き方になっている。

今日気付いたが、
他の本は「偏微分」が出てくるのだ。

人工知能に興味はあるが、人工知能が専門じゃない他の分野の人や
文系の人には偏微分の記号「デル」が出てきた段階で拒絶反応である。
読む気が失せる。

その点、この「はじめての人工知能 Excelで体験しながら学ぶAI」には
今のところ偏微分は出てきていない。
だから自分でも読むことができた。(まだ72ページ目だが)
ざっとパラパラ最後までページをさら見したが
偏微分は出てこなそう。

72頁目までで勉強したのは
「パーセプトロン」と「ホップフィールドネットワーク」という
2種類のニューラルネットワーク。

ニューラルネットワークには
層構造になっていて上下層方向へ方向性のある「階層構造型」と
層方向への方向性がなく、1平面で完結する「相互結合型」があって、
「パーセプトロン」は「階層構造型」
「ホップフィールドネットワーク」は「相互結合型」に該当する。

例題のエクセルをいじった感じでは、
パーセプトロンの方が、「重みづけ配列」のサイズが小さかったせいか
精度が悪く感じた。
「ホップフィールドネットワーク」は重みづけ配列がでかかったせいか、
けっこうな精度でアルファベットのAが想起された。(気分がよかった)

ここまでが71ページ目までの内容。
その後で問題が起きる。

71ページの終わりから72ページ目にかけて、
ホップフィールドネットワークを用いた練習問題みたいな感じで
「8クイーン問題」を「ホップフィールドネットワーク」で解こう、
というもの。
「8クイーン問題」とは
8×8の盤面にチェスの駒のクイーンを8個、
移動可能範囲が重ならないように
配置する組合せ最適化問題だ。
クイーンは将棋で言う「飛車」と「角」を合わせた
動きをする。
最近、人工知能に囲碁のプロ棋士が負けた件があったので、
こういうゲームのような問題をニューラルネットワークで解く練習問題は
やる気が出てくる。

「ホップフィールドネットワーク」では、
エネルギー関数Eというものを定義して、
エネルギー関数Eの値が極小値を取るまで収束計算をする。
このEが大事なのに、
「8クイーン問題」のページには

E=(-1/2)e、e=f(横に1駒)+g(縦に1駒)+h(斜めに高々1駒)として
ノードの値を合計
としか書いてない。

わかりやすい本なのだが、ここだけが分からない。
何度考えても分からない。
どう式にすればいいんだ。

Googleに「8クイーン」と「ホップフィールドネットワーク」と入れて
検索してみるが、Eの定式化部分が
書いてあるページは見当たらない。
(Eを上手く自分が収束させたい値に
もっていくよう定式化するところが
大事なんだけどなあ)

ただ、Googleの検索結果の頭には
CINIIの論文検索結果がヒットしている。

>ホップフィールドネットワークの学習によるNクイーン問題の一解法
>唐 政、熊谷 寛夫、曹 其萍
>http://ci.nii.ac.jp/naid/110003313723

CINIIとは国立情報学研究所の略。
ありとあらゆる論文が読めるサイトだ。
ただ、自分が大学の頃はタダで見ていたし、会社入って1、2年目もタダで
論文が見れた。
しかし、ある年からいつの間にか
論文のPDFを見るのが
有料になった。
(ついでに日本建築学会の論文データベースもある年から有料になった。)
ただ、それを悪いとは思わない。
研究者や学会の立場や経営のことを
考えたら、有料と言われても仕方ない
と思っている。
なので建築学会の会員にもこないだ再び入った。
(金を払っても見たい情報、、
の時があるから)

で、話は飛んだが
自分は決意した。
時は金なり。
生きた情報も金なりだ。
価値ある情報は金で買うのだ。

CINIIの個人登録の年会費2160円と
富山大学のこの論文購入1134円の支払いを決めた!
で、iPhoneでサクサクっと購入。
論文のPDFをダウンロードした。


あー、こういう意味だったのか。

本に書いてあった関数「f(横に1駒)」とは
f=Σi=1〜N(Σj=1〜N Xi,j -1)^2
こんな感じなのだろう。
あるi行のノードの値Xi,jを全て足したものΣj=1〜N Xi,j
から1を引いてエネルギーなので2乗すると、
最小値はゼロとなる。
これを全ての行で足す。
そうすると各行に1個ずつしかない状態が
最小のエネルギーになる。

これとおんなじ感じの事を
g(縦に1駒)や(斜めに高々1駒)もやる。
(ただ、論文に書いてあった斜めの項は少し式が特殊だったなあ。)

エネルギーEの式以外には
苦手な偏微分が出ているが、
幸いEの式にはΣしか出てないので
自分にもなんとなく読めた。

まあ、自分の友達とかが知ったら
きっと無駄遣いだと思われるんだろうな。

たた、今いいとこなんだよな。
このままディープラーニングまで
楽しく勉強し続けれる気がするんだよな。
なんとなく。
posted by iyoder at 18:51 | Comment(0) | TrackBack(0) | 人工知能

2016年05月04日

落合陽一と堀江貴文の本を読む

テレビがつまらない。
なので動画を見る。
youtubeはホーム画面に
自分におすすめの動画を一覧で表示する。
これがいけない。
見た動画ばかりが表示されるのだ。

見たことないけどおすすめな動画を表示してくれ!!

とういことでインターネット全盛の時代に
インターネットに飽きた。

面白いことないかなあと、コンビニに行くと
DIME 6月号が置いてあり、
買ってしまう。



最近、人工知能に興味深々な自分は
現代の魔法使いと呼ばれる落合陽一氏の記事に目が行く。
20世紀は映像の世紀。21世紀は魔法の世紀らしい。
仕組みを知らないまま色んなことがコンピュータ(スマホ含む)でできる時代。
魔法。
あこがれる。
記事によれば落合陽一氏は最近、2冊目の本を出したらしい。
1冊目は「魔法の世紀」という本。
堀江貴文氏が本の表紙の帯部分にコメントを書いている。

>堀江貴文氏
>「コンピューターは僕にとって魔法の箱だった。そして魔法はまだとけないことをこの本で知った。
>落合陽一の魔法があれば、僕はあと50年は戦える」

堀江貴文氏 にここまで言わせるとは。
何かとてもいい本のように思える。

が、自分は新しいもの好きなので、
出たばかりの2冊目の方の本「これからの世界をつくる仲間たちへ」を買う。
DIMEの記事によれば、
若い人向けに書いた本らしい。



で、一気に読む。
おもしろい。

自分は仕事でよく研究者タイプだと言われる。
ある問題に対してとことん掘り下げていくタイプらしい。
高校生のときも担任からそう言われた。

ただ、研究ではない仕事で研究者タイプと言われるのは
ほめ言葉ではないな。
けなしてはいないが「仕事ができる」タイプではない
という意味合いが裏にある。
ビジネスマンとしては優秀ではないのだろう。

「これからの世界をつくる仲間たちへ」を読むと、
自分は研究者タイプでもいいのかもしれない、と思えた。
この本に書かれているこれからの魔法の世紀で必要とされる人材像
を知ると、なにかやる気が出てくる。
自分しか気づかない問題を(コンピュータで)解決したくなる。
詳しくは本を読んでほしい。

そんなGW。
実家に帰ってきたが、
特にすることもない。
やはり、本だ!
テレビとインターネットがつまらなく感じた時、
簡単に手に入らない情報こそ面白い。
本は読む体力が必要、一瞬で分かる情報ではないという点で
今の自分にはちょうどよいのかもしれない。
(ただ、、kindle版のおかげで、
 読みたい、という気持ちがあればすぐに手に入る。
 読み始めることができる、という点は時代の進歩で素晴らしい)

ということで落合陽一氏の1冊目の本「魔法の世紀」も買って読んでしまおう。




「魔法の世紀」はどちらかというとアーティストの色が濃く出ている本だ。
メディアアートの歴史など、芸術的な要素がたくさん書かれている。
芸術的な表現が多いせいか、
自分は2冊目の「これからの世界をつくる仲間たちへ」の方が好きだな。


で、読書の意欲は止まらず、
次なる本を探し始める。
落合陽一氏単独の本はもうないから、
堀江貴文氏の本「君はどこにでも行ける」を買ってみた。



堀江氏が様々な国を旅して
アジアや欧米の近況と
日本が安くなったことを書いている。
読むと正直ショックである。
自分はなんとなく日本は世界でだいぶ上の国だと思っていた。
経済大国だと思っていた。

ただ、そんな「事実」を知りたくて
買った本だ。
普段得ない情報が得られたからこそこの本は
自分にとって有益だった。

そういえば、昨日、実家の最寄り駅に降りた時、
駅前の大量の人だかりの8割が南米系の外国人でビックリしたなあ。

そんなこんなで
3冊一気読みしてみた。
あー、テレビより、動画より100倍面白かった!
















posted by iyoder at 19:19 | Comment(0) | TrackBack(0) | kindle

2016年05月01日

amazonで革靴を買う。

見た目を少しでも良くしたい。
4月頭にワンダーコアスマートを買ったのもそんな理由。
image.jpeg



会社でいつも同じネクタイだと指摘されたので
5本程いつも付けない色のネクタイを買ってみる。
そうすると、会社のトイレで鏡を見た時に
いつもと違う色を身につけた自分の違和感というか新鮮さというか、
それが自分に新しいアイデアをもたらす。
いつもと違う可能性を感じさせてくれるいい暗示となった。

革靴を買おうと思うと、
買う時間は土日の休日か、平日の昼休みとなる。
平日の会社帰りでもいいのだが、
その場合は会社の駅近くのスーツカンパニーに限られる。
なんとなく、同じ会社の人が通るかもしれないので
入りずらい。
昼休みも同様である。

じゃあ、別の駅で降りて買えば、と思うが
いざ電車に乗ると、もう降りたくなくなるのだ。
仕事終わり、、疲れているのだ。一日の嫌なことが終わって
電車に乗ったら降りたくなくなる。
ただのめんどくさがり。
じつはそろそろ革靴買わなくてはと思ったのが2月。
つま先の靴底が分離し始めた。
ドラゴンボールの亀仙人との修行開始時の悟空のくつ、
と言えばある程度の人は分かってくれるだろう。

もう2か月以上経ってしまった。
これはいかん。
そこでふと思いついた。

amazonでくつ買おう。

そう、靴とは靴屋で買うもの。
足のサイズが合わないと困るもの。
特にビジネスマンの革靴というものは
足のサイズが合わないと、
骨に痛みを覚える。。本当に合わないと痛いものなのだ。

それを靴屋に行かず注文で買うなど
今までは自殺行為。。そう、今までは。

最近、走れるビジネスシューズというものが
流行っているようである。
見た目は革靴だけど、きっととても柔らかいのだろう。
スニーカーの如く柔らかければ
きっと痛くならない。

「走れるビジネスシューズ」で検索すると
下記のランキングサイトを見つける。
>G-ranking 疲れにくい、歩きやすいビジネスシューズを教えて
http://pmall.gpoint.co.jp/g-ranking/ranking.php?themeid=227

6000円〜7000円くらいのものもあれば、
2万円とかするものもあるようだ。
革靴はスーツより高いものを買え、と言われているようだが
正直、計算とか解析とかの仕事で革靴に金かけてどうするのだろうか。
自分はまず清潔感というか、汚い靴を履いてたらまずいなというくらいの
感覚である。
別にエグゼクティブになりたい訳ではない。

さて、どれを買うか、と考えた時、
自分の直感は1位。
ランキング1位。紐ないけど。。
1位というものにひかれた。
紐ないけど。紐ない革靴履いたことない。スリッポンというのか?
下記のサイトではエグゼクティブはスリッポンを履いたらだめらしいけど、
エグゼクティブを目指さないので履いていいと思う。

>IGNITE エグゼクティブを見分けるためのビジネスアイテム5つ
http://ignite.jp/2014/08/19/post-51715/

ということで1位のasics texcy luxe 7770 をamazonで購入。
そう、楽天のリンクのrankingだったけど、早く履き替えたかったので
(くつも限界だったので)amazon primeで購入。

楽天の方が写真はかっこよかったけどね。

そして次の日届いた。









image.jpeg

いざ履いてみる。。。

やわらかい!

そして丁度よい。

うん、でも革靴だ。
あー、なんということだ。靴ですらスマホで1クリックで買える時代。
もう靴屋に行かないな、たぶん。

そして、次の日少しやや遅めに起きたため
軽く駅まで走ってみる。
おー、なんということだ。まったく足が痛くない。
いい買い物だ。
posted by iyoder at 22:15 | Comment(0) | TrackBack(0) | amazon

2016年03月20日

pywinautoでGUIのメニューをクリック

pywinautoで何がやりたいか。
それはWINDOWSのGUIのメニュー操作。

半年前はExcelのVBAのwin32API関数でやろうとしたが、
途中で挫折した。
メニューバーに並んでいる「ファイル」とか「編集」とか
のハンドルの取得まではできたが、
その先の「名前を付けて保存」とかまで行くのに上手くいかなかった。
結局メニューのクリックはできずに終わった。。。力不足。

それでpythonのpywinautoに目を付けた。
そしてやっと、試行錯誤の上、CADソフトのメニューを自動操作して
名前を付けて保存に成功した。
以下はそのコード。
環境は
PC:windows10(64bit)
python3.4 (64bit)
pywinauto0.5.4
(操作してるソフトは32bit)

# -*- coding: utf-8 -*-

def test(app1,pass1):
try:
app1.Connect(path = pass1)
except:
app1.Start(cmd_line = pass1)


if __name__ == "__main__":
import pywinauto
from pywinauto.application import Application

#アプリ起動
app = Application()
pass1 = u"C:\Program Files (x86)\AutoCAD 2007\\acad.exe"
test(app,pass1)

dialog = app[u".*名前を付けて保存.*"]
if dialog.Exists() == False:
pwin = app.window_(title_re = "AutoCAD.*")
MenuItms = pwin.MenuSelect("ファイル->名前を付けて保存")

# ファイル名を設定
dialog.Edit1.SetText(u"test01.dwg")

# 保存ボタンをクリック
dialog_button1 = dialog[u'保存(&S)']
dialog_button1.Click()
# 上手くクリックを認識しなかった時用に再クリック
if dialog_button1.Exists():
dialog_button1.Click()

# 同名のファイルが存在した場合(上書きする)
confirm = app[u".*名前を付けて保存.*"]
confirm_button1 = confirm[u'はい(&Y)']

if confirm_button1.Exists():
confirm_button1.Click() #上書きする

名前を付けて保存3.JPG

名前を付けて保存4.JPG

流れとしては
@ソフトが起動していれば接続。起動してなければ起動。(関数にした)
A「名前を付けて保存」ダイアログが開いてなければメニューから選択して開く。
Bファイル名をセット。
C保存ボタンを押す。
D同名のファイルがあれば上書きするか求められるダイアログが開く。
 (「はい」ボタンがあるかでif文で認識させた。)
保存終了。

ポイントとしては、たまたま起動するexeファイルの頭文字が「a」だったので「\a」で
別の符号みたいに認識してしまうので「\\acad.exe」としたら回った。

これを応用していけば、メニューはクリックし放題。
できることの幅が広がった!
posted by iyoder at 17:56 | Comment(1) | TrackBack(0) | プログラム

2016年02月28日

pywinautoとcx_freezeとpywin32の共存

念願のpywinautoをインストールしようと思う。
windowsの自動化だ。

検索するとver.0.4.0がよく出てくる。
これが最新版なのかな?
>sourceforge python win32 automation
>https://sourceforge.net/projects/pywinauto/files/

もう少し根気よく検索していくと
ver.0.4.2で記載しているサイトを見つける。
英語だけど、、、公式サイトかな?
でもダウンロードページに行くと、
さっきと同じ0.4.0のダウンロードサイトに行くようだ。
>pywinauto 0.4.2 documentation
>http://pywinauto.googlecode.com/hg/pywinauto/docs/getting_started.html

もっと調べていくとpipでインストールできると
書いてあるQ&Aを見つける。
pythonの3系もバンドルされている、とある。
(バンドルの意味はわからないが、、)
>yahoo知恵袋 pythonのpywinauto-0.4.0のインストールについて質問です。
>http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14147728284

pipとは何ぞやと思いながら、そのページに書いてある
pip install pywinautoというコマンドを
コマンドプロンプトに打ってみる。

するとコマンドプロンプトの画面にたくさん文字が出てきて
よく見ると0.5.4と書いてある。
どうやら最新版は0.5.4のようだ。

pipとはpythonのパッケージをインストール、アンインストールする
仕組みのようだ。
(pip uninstall パッケージ名でアンインストールもできるようだ)
よしこれでついにpywinauto をインストールしたぞ。

ということで、下記のサイトを参考にして
さっそくサンプルコードを書いてみる。
>necoakの日記 pywinauto で、pythonでWindows GUI 自動化の試み
http://d.hatena.ne.jp/necoak/20120917/1347866653

from pywinauto import application
app = application.Application.start("C:\Program Files (x86)\Internet Explorer\iexplore.exe")

拡張子は.pyでいいのかな。pythonだし。
とりあえずauto01.pyで保存。
で、コマンドプロンプト上でcdコマンドを使って、
ファイルのあるフォルダに移動し
python auto01.pyコマンドで実行。

あれ?回らない。
win32apiがない、と表示される。
どういうことだ。。

win32apiがない.JPG

検索して調べると、pywin32という
パッケージをインストールする必要があるようだ。
pipで入れようと試みるが、コマンドを打っても入らない。
下記のサイトのpywin32-220.win-amd64-py3.4.exeをダウンロードしてインストール。
>sourceforge Python for Windows Extensions
https://sourceforge.net/projects/pywin32/files/pywin32/Build%20220/

そして、もう一度実行(python auto01.py)

、、、回らない。
今度はソースのstart関数にcmd_lineというものが足りてないらしい。

cmd_lineが足りない.jpg

検索し続けた結果、
下記のように書き直してみた。
ちゃんとcmd_lineも書いてある。

from pywinauto.application import Application
app = Application().Start(cmd_line=u'"C:\Program Files (x86)\Internet Explorer\iexplore.exe" ')

実行!(python auto01.py)

やったー成功。
今となっては懐かしいinternet explorerが起動。

internetexplorer起動.jpg

「32bitプログラムは32bit pythonで自動化すべき(あなたは64bit pythonを使っているけど)」
というwarningが出てるけど、まあ気にしない。
時代は64bitパソコンに移行してるんだから。


で、全てが上手くいったように思えたが、、、

前回「HelloWorld」とテキストファイルに出力するだけの
pythonプログラムを書いて、cx_freezeを使ってexeファイル化したが、、
>pythonでexeファイルを作ろう
https://fanblogs.jp/mountain4101/archive/48/0

pywinautoとpywin32を入れた後に、
上記テキストファイル出力プログラムを再度exeファイル化しようとしたら、、、

エラー。

exeファイルとpython34.dllファイルはできたが、
他のファイルが吐き出されなくなった。

cx_breeze_error2.JPG

exeファイルをダブルクリックしてもエラーで動かない。

えー、ということはpywinauto・pywin32による自動化と
cx_freezeによるexe化の両方を実現することはできないということ!?

そんなアホな話があってたまるか。

cx_breeze_error.JPG

エラー部分を見ると、
C:\Python34\Lib\site-packages\win32\libのフォルダにある
「win32verstamp.py」というファイルの123行目でエラーが起きているらしい。

で、調べた。
日本語のサイトには書いてない。
英語のサイトもたくさん見た。英語苦手だけど。
で、下記のサイトにたどり着く。

>[python-win32] win32api - small patch for win32verstamp.py
https://mail.python.org/pipermail/python-win32/2014-December/013327.html

「if not ofn:」を「if ofn is None:」に直せということか?
確かにwin32verstamp.pyの129行目に「if not ofn:」があるので
「if ofn is None:」に書き換えてみる。

そして、テキストファイル出力プログラムを再度exe化してみる。。。
やったー回った。

exeファイル復活.JPG

test.exeファイルを実行すると
前回同様、ちゃんとHelloWorldと書かれたテキストファイルが出力された。

今回はさすがに無理かと思ったけど、
海外にはちゃんと先に悩んで解決した人がいるんだと思った。
これでpywinauto・pywin32とcx_freezeを共存させることができた。

自動化のプログラムをたくさん作ろう。





posted by iyoder at 16:04 | Comment(0) | TrackBack(0) | プログラム

2016年02月21日

pythonでexeファイルを作ろう

高級言語。
実行速度は遅いが同じ内容を少ないコードで実現できる。
流行りのRubyとPythonのどちらにしようか悩んだ。

芸能人でRubyの女神の池澤あやかを見習ってRubyにしようかとも思ったが、
自分はエンジニア。豊富な科学技術計算ライブラリをもつPythonの魅力は捨てがたい。
車輪の再発明は避けなければならない。
Pythonをインストールすることにした。

何も考えず一端は(2/21現在)最新版のPython3.5.1をインストールしたが
3.5は対応していないモジュールが多いので、アンインストールして
Python3.4.4をインストールした。
((2/21現在)3.5はexeファイルを作る方法がない。
 HCpy-Standalone-Bというソフトでできるようだが、
 ダウンロードしようとしたらWindows Defenderによるウイルスチェックではじかれた。)
exeファイルにできないと、PythonをインストールしているこのSurface Pro以外で使えない。
もし有用なプログラムを書いたら、仕事でも使いたい。
そのためにvisual studio 2015を使うのをあきらめたのだから。


ということで下記のサイトを参考にインストール完了。
>windows環境へのpythonインストール
http://qiita.com/maisuto/items/404e5803372a44419d60


Python2.xでexeファイルを作成する場合はpy2exeというモジュールで
簡単にexeファイルが作れたらしい。
Python3.x系統ではcx_freezeというモジュールを使うようなので
下記のサイトからダウンロード。→インストール
>Python Software Foundation cx_Freeze 4.3.4
https://pypi.python.org/pypi/cx_Freeze/4.3.4


さあ、初めてのコードを書こう。
テキストエディタに下記のコードを記載し、「test.py」として保存。
「HelloWorld」と書かれたtext01.txtというファイルを出力するコードだ。
pythonは高級言語だけあって、変数の型を宣言する必要はない。

a = 'Hello '
b = 'World'
c = a + b

fout = open('text01.txt', 'wt')
fout.write(c)

fout.close()

これをコマンドプロンプトからcdコマンドでtest.pyのあるフォルダに移動して
python test.py
というコマンドを実行すれば
テキストファイルが隣に出力される。


せっかくだから今まで覚えたBATファイルの知識を使ってみる。
テキストエディタに下記のように記載し、「testpy.bat」という名前で保存する。
@rem エコーを出力しない
@echo off

rem BATのあるフォルダに移動し.pyファイルを実行するBAT

rem 現在のフォルダに移動
cd /d %~dp0

python test.py

pause
exit

BATファイルのあるフォルダからの相対パスにしたい場合は
「python test.py」部分を
「python test1\test.pyとすれば、test1フォルダ内のtest.pyを実行する。
(pauseは必要に応じてremでコメントしてもよい)

テキストファイルへの入出力は下記のサイトを参考にした。
>今さらPython3 (49) - テキストファイル入出力
http://deutschina.hatenablog.com/entry/2016/01/26/013000

※後日、test.pyをダブルクリックするとコマンドプロンプトを介さなくても
 実行されることに気付く。。。。Batファイル要らないね。


さて、次にexeファイルの作成だが、
テキストエディタで下記のように記載し、「setup.py」という名前でtest.pyと同じフォルダに保存。
import sys
from cx_Freeze import setup, Executable

includes = []

base = None
if sys.platform == "win64":
base = "Win64GUI"

setup( name = "",
version = "",
options = {"build_exe": {"includes": includes}},
executables = [Executable("test.py", base=base)])

setup.pyの作成方法については
下記のサイトを参考にした。
>みーのぺーじ Pythonをcx_Freezeでexeにする (windows編)
http://pc.atsuhiro-me.net/entry/2013/01/21/000000_1

で、上記サイトは32bit版で記載しているが
自分はSurface proで64bit版のpythonをインストールしているので
5行目から6行目は
「if sys.platform == "win64":
base = "Win64GUI"」とした。
あと、上記サイトではPyQtというQUIに使うモデュールを取り込んでいるが、
自分の数行のコードは特に取り込む必要のあるモデュールもないので
「include」部分は空欄として「 includes = [] 」とした。

で、コマンドプロンプトからcdコマンドで
test.py、setup.pyと同じフォルダに移動し、
python setup.py buildというコマンドを実行すれば、buildフォルダができあがる。
中にはきちんとexeファイルができており、
実行すれば「HelloWorld」と書かれたテキストファイルがexeファイルの隣に出力される。

build.JPG

テキストファイル.JPG

上記も面倒なのでBATファイルを作ってしまうと、
テキストエディタで下記のコードを記載し、「setup.bat」として
test.py、setup.pyと同じフォルダに放り込む。

@rem エコーを出力しない
@echo off

rem BATのあるフォルダに移動し.pyファイルを実行するBAT

rem 現在のフォルダに移動
cd /d %~dp0

python setup.py build

pause

exit

setup.JPG

BATファイルを実行すれば、同じ場所にbuildフォルダができあがるという訳。
これでpythonのプログラミングが始められるようになった。
よしよし。

目標としては、「pywinauto」という機能で、
windowsを自在に操ること。
それまで地道に勉強しよう。
posted by iyoder at 21:17 | Comment(0) | TrackBack(0) | プログラム

2016年02月06日

USBハブ

知人二人がsurfaceの話をしていた。
一人はproでないsurfaceを買ったらしい。
windowsRTと言っていたのでsurfaceかsurface2を買ったのだろう。
officeが使えてネットサーフィンだけできればいいのならそれで十分だ。
(今の最新版はsurface book、surface pro4、surface3だけど
surfaceやsurface2でもいい人もいるんだなあ)






もう一人はもっていないがsurface pro3の購入を薦められていた。




surfaceもsurface proもこれまでたくさんのバージョンが発売されてきた。
amazonや楽天、Yahooオークション等を使えば
古いバージョンも容易に購入できる。
最新版を買わなくても財布と必要な機能に応じて好きな型を買えばいい。

GIGAZINEでも着脱式タブレット市場増加の記事が出ている。
ipad proも売れているようだ。
なんだろう。自分が2012年頃から発売を楽しみにしていたsurface proを含む着脱式タブレットPCは
ようやく大衆に受け入れられたらしい。

>GIGAZINE
>タブレット市場低下の中で着脱式タブレットは増加、一方でウェアラブル系が飛躍的に成長
http://gigazine.net/news/20160202-sales-of-tablet-wearable-smartwatch/


と、ここまでは平和な話。

今日は我らが初代surface proを使おうと思ったら
起動時にsurfaceの文字が出たあと
画面が暗くなって上手くwindowsが起動しない。
なんど再起動しても同じことの繰り返し。

買ってから2年と8ヶ月。
初代surface proは頑張ってきた。ちょっと疲れたのかな。
自分も先週は疲れた。ヘトヘトだったので今日(土曜)は朝10時まで寝てある程度回復した。
surface proも軽くしよう。

初期化することにした。

とりあえずは自分のファイルを残した状態で初期化。(OSやソフトのみ初期化)

これでとりあえずwindowsが起動するようになった。

で、次は自分のファイルを外付けハードディスクにコピーして
「出荷時の状態に戻す」(OS、ソフト初期化+自分のファイルも削除)
を実行。

そう、何かトラブルが起きてうまくOSが起動できなくても
自分のファイルを消さずに避難してから初期化できる二段階初期化。
安全な時代になったものだ。

windows8に戻ったのでwindows10をインストールし直して
完全に軽くなった。
頭の中と一緒で一端軽くした方がいいんだよ。
自分もパソコンもリフレッシュしたのであった。


で、本題。
話は1週間前の土日に戻り、

ちょっと家で作業をしようと思った。
USBを挿す。
あれ?
入れたはずのデータが入ってない。。

あ、そうそう外付けハードディスクの方に入れたんだった。
で、USBを外さなければいけない、、、

(イラっ)

あー、なんていらいらするんだ。
USBを一端外してハードディスクのケーブルを挿し直さなければいけないなんて
(いやいや。なんでこんなイライラしてるんだ。カルシウム不足か?)
われらが初代surface proは言わずもがなUSBポートは1つしかない。

というか、平成25年6月7日に日本発売と同時に購入した初代surface pro。
使いに使い倒してきたが、なぜ今までUSBハブ無しでバリバリ使ってこれたのか
不思議だ。


で、即USBハブをamazonで注文。
もちろんsurface pro用のやつ。(純正品はないのでサンワサプライのやつ)



で、届いた。

image.jpeg

パッケージを開けるとこんな感じ。
パッケージの中にある時よりマットな感じが際立っていい感じ。

image.jpeg

取り付けるとこんな感じ。
おー。目立たない。黒が一体感。

image.jpeg

USBと外付けハードディスクを挿してみる。
おっと。USBが白い。。。黒がいいよー。
即、黒を買いに行こう。マットなやつ。


image.jpeg


マットな黒に青いLEDがいい感じ。

image.jpeg

当たり前だがちゃんとハードディスクとUSBが認識されている。ハブだからね。

image.jpeg


ただのUSBハブを買っただけ。
それだけ。
でもいい気分転換。

posted by iyoder at 19:17 | Comment(0) | TrackBack(0) | surface
最新記事
<< 2021年01月 >>
          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            
カテゴリーアーカイブ
ファン
プロフィール
最新コメント
×

この広告は30日以上新しい記事の更新がないブログに表示されております。