Python:テンポラリーファイルとテンポラリーディレクトリの作成

使用するモジュール :tempfile

import tempfile でインポートできます。

テンポラリーファイルの作成

一時的にテキストなどを保存して、処理が終わったら自動的に消すか残すか選択できます。

テンポラリーディレクトリの作成

こちらも一時的にディレクトリを作成して、処理が終わったら自動的に消すか残すか選択できます。

おわりに

いろんなソフトウェアを使うとテンポラリーファイルが溜まっていくと言われてますが、こういうことなんですね。自動的に消えないようにしたときは、しっかり自分でディレクトリとファイルを消すようにしないといけませんね。

消し方はこちら。ファイル操作

import os

os.remove(path)

os.rmdir(path)

ディレクトにファイルが入っていると消せないので、まるごと消す場合はこちら。

import shutil

shutil.rmtree(path)

Python:ファイル操作 os pathlib glob shutil

ファイル操作を行うためのモジュールは

  • os:ファイル、ディレクトリの作成、削除
  • pathlib:パス指定でファイルを作成(タッチする)
  • glob:ファイル名のリストを出力する
  • shutil:ファイルをコピーする。まるごと削除する

がありますので基本機能を使ってみます。

 

あとは、必要に応じてググりましょう。大事そうなものは追記していきます。

Python:ファイル操作 os

 

Python:csvを操作する

csvファイルを作成する

 

csvファイルを読み込む

 

Python:txtファイルを作成、開く、読み込む、上書き、追記

python script を実行しているときに、何かしらを.txtファイルや.csvファイルとして保存したいデータがあると思います。

.txtファイルを新規作成して、なにかしらを書き込んで保存するところまでやりましょう。

これを再度呼び出して追記します。

今度は、ただ読み込んでみます。

もっといい方法があります with構文

f.close()する必要がありません。

一行づつ読み込むこともできる

while True → f.readline() → if break

2文字ずつ読み込むこともできる f.read(chunk)

文字を調べる f.seek

f.tell() 現在位置を確認する

f.read(1) 現在位置の値を確認する

f.seek(5) とかで現在位置を移動する

f.read(1) 現在位置の値を確認する

この繰り返し作業でいろいろ操作していく

Python:HIOKI8870のcsvデータをpandas.DataFrameに読み込む方法

使用するモジュール群

あとでmatplotlibでグラフを作ったりするので、あらかじめインポートしておきます。

HIOKI8870のcsv生データを読み込む関数

単純には読み込めません。エラー回避のポイントは以下の通り。

  • names (columnの名称)をあらかじめ指定し、列数を固定すること。
  • 日本語が入っているためencodingをshift-jisに指定すること。
 

関数の使い方

関数名:read_hioki(file_addr)

HIOKI8870のcsv生データを読み込み,整形したデータフレームを返す関数です。

引数はfile_addrのみ。読み込むcsvファイル名を絶対パスまたは相対パスで指定するだけです。(文字列で)

file_addr:HOKI8870のcsv生データ

返り値dfは、純粋にロギング条件を除去した、純粋な測定データ部分のみをPandas.DataFrameとした、データフレームです。

おわりに

以上で、データフレームが作成できましたので、あとはnumpyなどで内部処理を行った後に、matplotlibで可視化すると良いです。

Python:ImageMagick install

おばんです。圧倒的かずまなぶです。( `ー´)ノ

アニメーションするグラフを作るときに、jupyternotebook では


%nbagg
import matplotlib.pyplot as plt
import matplotlib.animation as animation

と、モジュールをインポートして

ani = animation.FuncAnimation(fig, plot, interval=100, frames=100)
ani.save("output.gif", writer="imagemagick")
plt.show()

というふうにアニメーションさせた後、保存します。

このとき、アニメーションを保存するためには、imagemagickが必要になりますので、
インストールのやり方をメモしておきます。

mageMagick のインストール

いろいろインストール方法を調べましたが最も簡単なのは、インストーラーを使うことです。

windowsであれば

http://www.imagemagick.org/script/download.php#windows

ImageMagick-7.0.8-68-Q16-x64-dll.exe を入れました。

それ以外ではこちらから選んでください。

http://www.imagemagick.org/script/download.php

 

ImageMagick-7.0.8-28-Q16-x64-dll.exe をダウンロードして、実行するだけです。

以上

Python:リスト内包表記をやってみる

こんにちは、今日はリスト内包表記をやっていきます。

タプルをリストに変換するコードという、簡単なケースを例としてやっていきましょう。

通常の書き方

リスト内包表記を使ったやり方

メリット:空リストが不要、アペンドも不要

さらにif文にも対応できる

#普通のやり方

#内包表記の場合

メリット:空リストが不要、アペンドも不要、if文のネストも不要

さらに i , j の2変数になり、for文がダブルになった場合

#通常の場合

#リスト内包表記の場合

メリット:たったの1行で書けてしまう。
ただし、2変数を超える場合は見難くなるので、通常のfor文を使ったほうが解りやすいかもしれない。

さいごに

どうでしょうか、リスト内包表記。かなりパワフルな表現方法ではないでしょうか。
よく見かける書き方なのでぜひマスターしておきたいです。

Python:ラムダ式の使い方

こんにちは、今日はラムダ式についてまとめました。

使わなくてもコードは書けますが、コードがシンプルになる場合があるので、
覚えておいて損はないです。
また、よく見かける書き方なので、
他人のコードを理解するためにも知っておいたほうがよいでしょう。

理解する手順として、
1.通常の関数を使ったやり方
2.関数部分をラムダ式に置き換えて動きを理解する
3.さらに簡単にする

です。やっていきましょう。

例題として、文字で構成されるリストを用意して、
頭文字を大文字に書き換える関数を作ってみましょう。

通常の関数を使ったやりかた

ラムダ式でコードをシンプルにする

さらにシンプルにする

ってことで、どんどん使っていきましょう。

Python:インストーラーの作成 cx_Freezeモジュール

こんにちは かず まなぶ です。(´・ω・`)

今日は、前回tkinterで作成した電卓ソフトを題材にwindows向けインストーラーを作成する手順についてやっていこうと思います。

おおまかな手順

  1. cx_Freezeのインストール
  2. setup.pyの作成
  3. ビルドとmsi生成
  4. インストール

1.cx_Freezeのインストール

anacondaプロンプトで

うまくいかないときはpipをアップグレードしましょう。

2.setup.pyの作成

電卓ソフト本体の他にsetup.pyというものを作成する必要があります。

cx_Freezeのサイトに行くと下記のようなsetup.pyを作成しなさいと説明があります。

os.environについてはtclとtkの絶対パスを指定する必要がありますので、適宜書き換えてください。

Executableには電卓ソフト本体のファイル名として”calculator.py”を指定します。

あとはショートカットとか名称を変えられるので、好きにやってください。

3.ビルドとmsi生成

anacondaプロンプトを立ち上げます。

calculator.pyとsetup.pyをカレントディレクトリにいれ、anacondaプロンプト上で、

終わったら

をすると、カレントディレクトリ内にbuildディレクトリとdistディレクトリが生成されます。

このdistディレクトリにはインストーラーであるcalculator-1.0.0-amd64.msiファイルが入っています。

インストール

インストーラーmsiを実行してみましょう。インストールはprogramfileディレクトリで良いと思います。

スタートボタンを押して、アプリケーション一覧を見ると見出し”C”のなかにcalculatorが入っているはずです。

実行すれば、pythonが入っていないPCでも動きます。

以上でございました。