カテゴリー
SugiBlog Webエンジニアのためのお役立ちTips

Python パッケージのインストール

少しPythonを触ってみていたら、パッケージがないということに遭遇したのでメモ。
実例として、対象パッケージはpandasです。

まず、以下のコマンドを実行してインストール済のパッケージを確認
pip listでも構いません

python -m pip freeze


pandasが見つかりませんでした。
なければインストールしましょう。

python -m pip install pandas

ダウンロードが始まったので、すんなりいくのかと思いきや、警告!

WARNING: You are using pip version 20.3.3; however, version 22.1.2 is available.
You should consider upgrading via the 'C:\Users\****\AppData\Local\Programs\Python\Python39\python.exe -m pip install --upgrade pip' command.

pipが古いと・・。
実行すべきコマンドを教えてくれているので、それに従いアップグレード。

python -m pip install --upgrade pip

改めてpandasをインストール

python -m pip install pandas

すると、既に入ってるよーと言われました。

インストール済のパッケージを確認。

python -m pip freeze


無事にpandasを発見しました。

473 views

Windowsでもfindでファイル検索したい

コマンドでファイル検索したいとき、Linuxみたいにfindコマンドが使えたらなぁ・・と思うことがあります。
エクスプローラーで検索すればそれまでなんですが、コマンドでやりたいときがあります。

そこで見つけたのがPowerShellのGet-ChildItemコマンドです。
findに似た動作をしてくれるので試してみました。

構文はこんな感じです。

Get-ChildItem [[-Path] <string[]>] [[-Filter] <string>]  [<CommonParameters>]

このコマンドにはエイリアスが設定されており、gcilsdirでも使えます。

例)ドキュメントから拡張子.txtのファイルをサブディレクトリも含めて探す

Get-ChildItem -Path "C:\Users\user\Documents" -Filter "*.css" -Recurse -Name -File
オプション
  • -Path
    検索するフォルダー(ディレクトリ)を指定します。
  • -Filter
    検索条件指定
  • -Recurse
    サブフォルダー(サブディレクトリ)も含めて検索
  • -Name
    結果表示にファイルのパスだけを表示する
  • -File
    検索対象をファイルのみに設定

詳しくは公式ドキュメントをご参照ください。
https://docs.microsoft.com/ja-jp/powershell/module/microsoft.powershell.management/get-childitem?view=powershell-7.2&viewFallbackFrom=powershell-6

1,791 views

JavaScriptで配列の値を合計する

JavaScriptにもPHPのarray_sumみたいな関数があったらな~とずっと思っていました。
ふとまた調べているとそれに近しい感じに出来るメソッドがあったのでご紹介します。

とりあえず配列を用意

const nums = [12, 23, 35, 41, 56, 64, 77];

関数を使った普通のやり方

const sum = function(nums) {
	let total = 0;
	for (let i = 0, len = nums.length; i < len; i++) total += nums[i];
	return total;
};

const total = sum(nums);

console.log({total});

ちなみに出力結果はこの通り

{ total: 308 }

そして調べていて発見したのがArray.reduceメソッドです。
書式:配列名.reduce( コールバック関数(結果の値, 要素の値), [初期値] )
初期値は省略可です。
続きを読む…»

9,144 views

コールバック関数でスコープ外の変数を使う

配列の各要素に対して処理を行いたいとき、コールバック関数を使います。

コードの例を見ていきましょう。

$data = [ 1, 2, 3 ];

$data = array_map(function($i) {
    return $i * 2;
}, $data );

print_r($data);

出力結果

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

次に、各要素に掛ける数値を外部で変数として宣言します。
それだけだとコールバック関数の中で使用することは出来ませんのでuseを使います。

$data = [ 1, 2, 3 ];
$n = 2;

$data = array_map(function($i) use ($n) {
    return $i * $n;
}, $data );

print_r($data);

同じ出力結果が得られます。

Array
(
    [0] => 2
    [1] => 4
    [2] => 6
)

他に2次元の連想配列に対して任意のデータを一括で追加することも出来ます。
続きを読む…»

1,668 views

配列内のオブジェクトから指定したプロパティを削除

配列化したオブジェクトの中から指定したプロパティだけを削除する方法。

fruits = [
    {
        name: "apple",
        color: "red",
        quantity: 3,
    },
    {
        name: "orange",
        color: "orange",
        quantity: 6,
    },
    {
        name: "grape",
        color: "purple",
        quantity: 10,
    }
];

ログを出力して中身を確認します。

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red', quantity: 3 },
    { name: 'orange', color: 'orange', quantity: 6 },
    { name: 'grape', color: 'purple', quantity: 10 }
  ]
}

forEachdeleteを使ってquantityプロパティを削除します。

fruits.forEach(element => delete element.quantity);

ログを出力して中身を確認しましょう。

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red' },
    { name: 'orange', color: 'orange' },
    { name: 'grape', color: 'purple' }
  ]
}

quantityプロパティだけが削除されました。

プロパティを追加する

先ほどとは逆に、配列化したオブジェクトにプロパティを追加してみましょう。

元のオブジェクト配列

fruits = [
    {
        name: "apple",
        color: "red",
    },
    {
        name: "orange",
        color: "orange",
    },
    {
        name: "grape",
        color: "purple",
    }
];

追加するオブジェクト配列

quantities = [
    {
        quantity: 3
    },
    {
        quantity: 6
    },
    {
        quantity: 10
    }
];

forEachObject.assignを使ってquantityプロパティを追加します。

fruits.forEach((element, index) => Object.assign(element, quantities[index]));

console.log({fruits});

出力結果

{
  fruits: [
    { name: 'apple', color: 'red', quantity: 3 },
    { name: 'orange', color: 'orange', quantity: 6 },
    { name: 'grape', color: 'purple', quantity: 10 }
  ]
}
1,882 views