かべぎわブログ

ブログです

Pythonから別のPythonファイルを呼び出す

概要

Pythonスクリプトから別のPythonファイルのスクリプトを呼び出してみたいと思います。

こんなかんじ

こんなかんじでできます。
呼び出すPythonファイルがどこにあるかによって指定の仕方がすこしちがいます。

同一階層のPythonを呼び出す

こんなかんじだとする。

python_dir
    ├─wawawa.py
    └─sasasa.py

wawawa.pyからsasasa.pyを呼び出す場合、こんなかんじでよびだしてあげる。

import sasasa

これだけでよい。

ディレクトリの中にあるPythonを呼び出す

ディレクトリの中にあるPythonを呼び出す場合はこんなかんじです。
こんなかんじだとする。

python_dir
    ├─wawawa.py
    └─dadada/
      └─sasasa.py

wawawa.pyからsasasa.pyを呼び出す場合、こんなかんじでよびだしてあげる。

from dadada import sasasa

おわりに

べんりですね

東京大学のデータサイエンティスト育成講座

東京大学のデータサイエンティスト育成講座

argparseで2つの引数のどちらかのみオプションとして指定させる

概要

Pythonでargparseをつかって2つの引数のうちどちらかののみを指定している場合のみOKとしてみます。

文章で書くとよくわかんない。
こんなかんじにしたい。

$ ./wawawa.py --wawawa
# これはOK

$ ./wawawa.py --sasasa
# これもOK

$ ./wawawa.py --wawawa --sasasa
# これはNG

こうすればよい

こんなかんじで指定してあげる

mutual = parser.add_mutually_exclusive_group(required=True)
mutual.add_argument('--wawawa',help='wawawa desu.')
mutual.add_argument('--sasasa',help='sasasa desu.')

おわりに

べんりですね

入門 Python 3

入門 Python 3

プルリクエストを投げるまで(git switch対応版)

プルリクエストを投げるまでの手順です。
git switch対応版です。

手順

ブランチをつくってきりかえる

一気にできる。

$ git switch -c develop

Switched to a new branch 'develop'

一応確認

$ git branch

* develop
  master

addしてcommitしてpushする

コードを修正して
addして

$ git add delete_iroiro.py

commitして

$ git commit -m 'add delete'

[develop 179b2ed] add delete
 1 file changed, 10 insertions(+), 4 deletions(-)

pushします

$ git push origin develop

Enumerating objects: 9, done.
Counting objects: 100% (9/9), done.
Delta compression using up to 12 threads
Compressing objects: 100% (5/5), done.
Writing objects: 100% (5/5), 515 bytes | 515.00 KiB/s, done.
Total 5 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
remote:
remote: Create a pull request for 'develop' on GitHub by visiting:
remote:      https://github.com/takakabe/aws_tools/pull/new/develop
remote:
To https://github.com/takakabe/aws_tools.git
 * [new branch]      develop -> develop

プルリクエストなげる

GitHubにいって f:id:kabegiwakun:20191017073822p:plain

compareのブランチえらんでプルリクエストのタイトルと文章をかいてクリエイトする。

f:id:kabegiwakun:20191017074019p:plain

チェックしてマージする

変更がいいかんじだったらマージする
f:id:kabegiwakun:20191017074152p:plain

後処理

GitHub上のブランチを消して
f:id:kabegiwakun:20191017074253p:plain

ローカルの方からも消してあげる
そのまえにブランチ切り替えて

$ git switch master

Switched to branch 'master'
Your branch is up to date with 'origin/master'.

マスターを最新にしてあげて

$ git pull origin master

remote: Enumerating objects: 1, done.
remote: Counting objects: 100% (1/1), done.
remote: Total 1 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (1/1), done.
From https://github.com/takakabe/aws_tools
 * branch            master     -> FETCH_HEAD
   b6702a2..14a5b5b  master     -> origin/master
Updating b6702a2..14a5b5b
Fast-forward
 IAM/delete_iroiro/delete_irorio.py | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

さっきのブランチを削除

$  git branch -d develop

Deleted branch develop (was 179b2ed).

おしまい

おわり

実用Git

実用Git

  • 作者: Jon Loeliger,吉藤英明(監訳),本間雅洋,渡邉健太郎,浜本階生
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2010/02/19
  • メディア: 大型本
  • 購入: 7人 クリック: 287回
  • この商品を含むブログ (45件) を見る

PowerShellで管理者権限でしか実行できないようにする

概要

PowerShellのスクリプトを管理者権限でしか実行できないようにしてみます。

前提

PowerShell v4 以上

スクリプト

こんなかんじ
#Requires -RunAsAdministratorを書いてあげる。

#Requires -RunAsAdministrator

# ↓確認用
Write-Host 'wawawa'

実行してみる

ためしに一般ユーザの一般の権限でうごかしてみる。

> .\admin.ps1
.\admin.ps1 : The script 'admin.ps1' cannot be run because it contains a "#requires" statement for running as Administrator. The current PowerShell session is not running as Administrator. Start PowerShell by using the Run as Administrator option, and then try running the script again.
At line:1 char:1
+ .\admin.ps1
+ ~~~~~~~~~~~
+ CategoryInfo          : PermissionDenied: (admin.ps1:String) [], ScriptRequiresException
+ FullyQualifiedErrorId : ScriptRequiresElevation

管理者権限で実行するとこんなかんじ。
うごく。

> .\admin.ps1
wawawa

おわりに

べんりですね。

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

PythonでIAMグループとかIAMロールをかんたんに削除してくれるPythonをかいた

概要

PythonでIAMグループとかIAMロールをかんたんに削除してくれるPythonをかきました。

これと
IAMグループをかんたんに削除してくれるPythonをかいた - かべぎわブログ
これ
IAMロールをかんたんに削除してくれるPythonを書いた - かべぎわブログ

りょうほういっしょにできんじゃね?という意見をもとにくっつけた。
classで継承させたりしている。
これつかいかたあっているのかな???

コード

こんなかんじ。

つかいかた

こんなかんじ

usage: ./delete_irorio.py [-h] (--group-name GROUP_NAME | --role-name ROLE_NAME) [--profile [PROFILE]]

おわりに

classむずかしい

入門 Python 3

入門 Python 3

PowerShellで管理者権限かどうか判定する

概要

PowerShellでAdministratorかどうかを判定してみます。

スクリプト

こんなかんじ。

$currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
$bool_admin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if ($bool_admin) {
    Write-Output 'Admin'
} else {
    Write-Output 'NotAdmin'
}

実行してみる

管理者権限で実行してみるとこう。

> .\check_admin.ps1
Admin

そうじゃないとこう。

> .\check_admin.ps1
NotAdmin

おわりに

おわり。

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

IAMグループをかんたんに削除してくれるPythonをかいた

概要

IAMグループをかんたんに削除してくれるPythonをかきました。
グループを削除する際にはポリシーをデタッチしたりユーザをリムーブしたりいろいろしなければいけないですがこのスクリプトはそれらを解決します。
いろいろデタッチしたりしてからグループを削除してくれます。

スクリプト

おわりに

resourceたのしい。

入門 Python 3

入門 Python 3

VSCodeで引数を与えてデバッグする

概要

VSCodeで引数を与えてデバッグしてみます。

手順

VSCodeのデバッグ画面の設定画面をクリックします。
f:id:kabegiwakun:20191012195717p:plain

launch.jsonが開くのでそこに"args":["--group-name", "test_group"],こんなかんじで入力してあげます。
この例だと./wawawa.py --group-name test_groupと実行したのとおなじかんじになります。
f:id:kabegiwakun:20191012195856p:plain

おわりに

たまにわすれがち

Visual Studio Codeデバッグ技術 (技術の泉シリーズ(NextPublishing))

Visual Studio Codeデバッグ技術 (技術の泉シリーズ(NextPublishing))

IAMロールをかんたんに削除してくれるPythonを書いた

概要

IAMロールをかんたんに削除してくれるPythonをかきました。

ロールを削除する際にはポリシーをデタッチしたりインスタンスプロファイルをリムーブしたりいろいろしなければいけないですがこのスクリプトはそれらを解決します。
いろいろデタッチしたりしてからロールを自動で削除してくれます。

スクリプト

こんなかんじです。

つかいかた

こんなかんじ。
だいたいわかるとおもう。
基本的にはロール名を指定してあげるだけ。

usage: ./delete_role.py [-h] [--profile [PROFILE]] --role-name ROLE_NAME

required arguments:  
  --role-name ROLE_NAME The name of the role to delete.

optional arguments:  
  --profile [PROFILE]   Use a specific profile from your credential file.

おわりに

ぼくのPython力があのころとくらべてすごくあがっていることがわかる

イシューからはじめよ ― 知的生産の「シンプルな本質」

イシューからはじめよ ― 知的生産の「シンプルな本質」

自分のインスタンスIDを取得する方法まとめ

自分のインスタンスIDを取得する方法をまとめてみた。

メタデータを取得する

メタデータをcurlなりwgetなりで取得する。

curl http://169.254.169.254/latest/meta-data/instance-id
i-XXXXXX

cloud-utilを実行する

以下のコマンドを実行する。
AmazonLinuxであればデフォルトでインストールされている。
そうでないOSの場合はcloud-utilをインストールしてあげる必要がある。

ec2-metadata -i
i-XXXXXX

cloudinitのディレクトリを参照する

cloudinitのディレクトリにインスタンスIDがあるのでそれを見てみる。

cat /var/lib/cloud/data/instance-id
i-XXXXXX

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

PowerShellでブレース展開みたいなことをやってみる

概要

PowerShellでブレース展開みたいなことをやってみます。

やってみる

こんなかんじ。

PS C:\> 'web','db','mq' | % { "$_-server" }
web-server
db-server
mq-server

またはこう。

PS C:\> 1..3 |  % { "server-$_" }
server-1
server-2
server-3

フォーマットもつかえる

PS C:\> 1..3 |  % { "server-{0:D2}" -f $_ }
server-01
server-02
server-03

おわりに

べんりですね

Windows PowerShellクックブック

Windows PowerShellクックブック

  • 作者: Lee Holmes,マイクロソフト株式会社ITプロエバンジェリストチーム(監訳),菅野良二
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/10/23
  • メディア: 大型本
  • 購入: 4人 クリック: 72回
  • この商品を含むブログ (15件) を見る

Powershellで必須の引数を定義する

概要

PowerShellをつかって必須の引数を設定してみます。

そもそも引数を設定するには

こんなかんじで設定できる。

Param($ichi, $ni)

# 引数を出力する
Write-Host $ichi
Write-Host $ni

スクリプトを実行したときにたとえばこんなかんじになる。

.\script.ps1 wawawa sasasa
wawawa
sasasa

実行時に変数名をオプションをとして実行することもできる。

 .\script.ps1 -ni sasasa -ichi wawawa
wawawa
sasasa

必須の引数を定義する

本題の必須の引数を定義してみる。

以下のようなかんじで[parameter(mandatory)]$変数名で指定してあげる。
以下は$niを必須に指定している。

Param($ichi, [parameter(mandatory)]$ni)

引数を1つだけ指定して実行すると$niの値の入力を促される。

.\script.ps1 wawawa

cmdlet script.ps1 at command pipeline position 1
Supply values for the following parameters:
ni:

おわりに

usageでいろいろなことを書くのもいいけどこういう制御もちゃんとしてあげたい。

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShellで自分のファイル名を取得する

概要

PowerShellをつかって実行中の自分のファイル名を取得してみます。

こんなかんじでできます

こんなかんじでできます。

$my_script_name = $myInvocation.MyCommand.name

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

PowerShell実践ガイドブック クロスプラットフォーム対応の次世代シェルを徹底解説

AttributeError: module 'logging' has no attribute 'basicConfig'のエラーの解消法

概要

Pythonでこんなかんじのエラーがでた。

$ python logging.py

Traceback (most recent call last):
  File ".\logging.py", line 1, in <module>
    import logging
  File "C:\Users\takak\blog_python\logging.py", line 2, in <module>
    logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

AttributeError: module 'logging' has no attribute 'basicConfig'

ちなみにPythonのコードはこんなかんじだった。

import logging
logging.basicConfig(format='%(asctime)s:%(levelname)s:%(name)s:%(message)s')

logging.warning('わーにんぐ')

解消法

Pythonスクリプトのファイル名がlogging.pyとなっていたのが原因。
loggingはloggingモジュールの中で使われているので使わないほうがよいのです。

スクリプト名を変えてあげる。

$ bash ./logging.py log_dasu.py
$ python ./log_dasu.py
WARNING:root:わーにんぐ

おわりに

すこしはまる。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

GitでCommitを取り消す

概要

Gitでコミットを取り消す方法です。

コマンド例

こんなかんじ
直前のCommitを消す方法です。

コミットだけを取り消す

$ git reset --soft HEAD^

コミットとインデックス/作業ツリーも取り消す

$ git reset --hard HEAD^

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門