datetimeモジュールについて
はじめに
最近datetimeモジュールについて学習したので記事を書く
datetimeモジュールとは?
・日付を扱うモジュール。モジュールとはimportして呼び出すだけで便利に使える処理を集めたもの。
・datetimeモジュールは、日付や時刻を操作するためのクラスを提供している。
含まれる主なクラス
・date:年月日の日付を扱う
・time:時分秒、マイクロミリ秒の時刻を扱う
・datetime:日付時刻(日付と時刻の両方)を扱う。
datetimeクラスのnow()で日付時刻(datetime)のオブジェクトを取得できる。
datetime(年、月、日、時、分、秒)の値の指定順は決まっている。
・timedelta:日付や日時時刻の間隔を扱う。
日付の書式を指定する
・Python3.8からの機能でf'{式 = :書式}'とすると書式を指定できる。
例
from datetime import datetime
day = datetime(2020, 6, 28)
date = f'{day = :%Y/%m/%d}'
print(date)
結果:2020/6/28
文字列を日付に変換する
・datetime.strptime(時刻を表す文字列, フォーマット)を利用することにより、時刻を表す文字列をフォーマットと同じ値が含まれている文字列であると判断しdatetimeオブジェクトを作成する。
例
from datetime import datetime
day = '2020-6-28'
str_day =datetime.strptime(day, '%Y-%m-%d')
日付の計算をする
・数日前、数日後のように足し算、引き算を使用した場合、datetimeモジュールのtimedeltaオブジェクトを利用する。
・days(日数)、seconds(秒)、minutes(分)、hours(時)、weeks(週)、microseconds(マイクロ秒)、milliseconds(ミリ秒)を指定できる。
改行コードについて
はじめに
先輩が改行コードの問題によりファイルが存在しているにも関わらずファイルが存在しないとエラーが返されていたため備忘録として記載する。
何が原因だったのか?
原因としてはLinuxでは改行コードLFを使用しなければならないが、Windowsで使用されている改行コードCR+LFを使用したことが原因だった。
なぜ起こったのか?
なぜこのようなことが起こったのかというと以下のような手順により起こったと思われる。
1.作業で使用するファイルを編集する
2.他のサーバーのコードをメモ帳(Windows)にコピー
3.編集していたファイル上記コードを貼り付け
2の作業により、改行コードがLFだったがメモ帳にコピーしたことにより改行コードがCR+LFに変わってしまったと予想している。
改行コードの種類
改行コードの種類は以下。
○LF(Line Feed:ラインフィード)
・英語で改行を意味する。カーソルを新しい行に移動する
・UNIX系、Linux、MacOS(MacOSX以降)で採用
○CR(Carriage Return:キャリッジリターン)
・英語で復帰を意味する。カーソルを左端の位置に戻す
・MacOSで採用
○CR+LF
・CRとLFを合体させたもの。左端にカーソルを戻して改行する
・Windowsで採用
改行コードの変更方法
○nkfコマンドを使用する
nkfコマンドとはNetwork Kanji Filterの略で、LinuxとWindowsなどの異なるOS間でテキストデータを交換する際に文字コードと改行コードを変換するために使用するコマンド。
・$ nkf -Lu ファイル名
-Luオプションにより改行をLFにする。-dでも可
・$ nkf -Lw ファイル名
-Lwオプションにより改行をCRLFにする。-cでも可
・$ nkf -Lm ファイル名
-Lmオプションにより改行をCRにする
○sedコマンドを使用する
sedコマンドとはStream EDitorの略で、指定したファイルをコマンドに従って処理し、標準出力へ出力するコマンド。
・$ sed 's/\r//' ファイル名
CRLFからLFに変更する
・$ sed 's/$/\f/' ファイル名
LFからCRLFに変更する
○vimコマンドを使用する
それぞれの改行コードを正規表現で表すとLF=\n、CR=\n、CR+LF=\r\nとなる。
変換するには「:%s/置換前文字/置換後文字/g」をしようする。
/gで全ての行に対して置換する。
・補足
以下を実行するとファイルの改行コードを確認できる
:set fileformat?
または
:set ff?
改行コードを可視化するには以下を実行する
:se list
参考にさせていただいたサイト
https://www.atmarkit.co.jp/ait/articles/1609/29/news016.html
https://qiita.com/bezeklik/items/aca37ffb127821311d6b
http://www-creators.com/archives/2551
Pythonのファイル書き込み
はじめに
Pythonのファイル書き込みについて備忘録として記載する。
説明
・open(ファイルパス, w)とwを付けると、書き込み用としてファイルが開かれる。
注意する点は、wを指定した場合はファイルに書かれていた内容は上書きされてしまうため消えてしまう。
また、ファイルが存在していなければ新規作成される。
・open(ファイルパス, x)とxを付けると、ファイルが存在しない場合のみファイルを作成し書き込む。
ファイルが存在する場合はエラーになる。
・open(ファイルパス, a)とaを付けると、追記モードでファイルが開かれる。
つまり、上書きではなく末尾に追記できる。
ファイルが存在しない場合はファイルを作成し書き込む。
使用方法
with open('ファイルパス', 'w', encoding='utf-8') as f:
f.write()
・上記のようにwrite()メソッドを使用すると文字列を書き込める。
文字列以外はエラーになるため注意。
Pythonのファイル読み込み
はじめに
Pythonのファイル読み込みについて備忘録として記載する。
説明
・読み込み、書き込みいずれの場合も関数open()を使用してファイルを開く。
・open()を使用してファイルを開いた場合close()メソットで閉じる必要があるが、withを使用した場合ブロックが終わると自動的ファイルが閉じられる。
使用方法
○open()
f = open('ファイルパス', encoding='utf-8')
contents = f.read()
print(contents)
f.close()
・第一引数にファイルのパスを記載、第二引数に文字コードを指定する。
文字コードの指定方法は大文字、小文字どちらでも良い
・read()メソッドを使用すると、ファイル内容を文字列として変数に代入できる。
・上記でも説明したようにclose()メソッドを使用してファイルを閉じる。
・(ファイルパス, r)で読み込み専用としてファイルを開く。
rについては省略できるため省略して記載している。
○with
with open('ファイルパス', encoding='utf-8') as f:
・ファイル1行分ずつの文字列を変換したものを変数(上記f)に代入していく。
・as fについては特に名前の決まりはないので自由。
・ファイルから読み出したデータは文字列なので、ファイル内に書かれている数値も数字に変換される。
HTMLについて
はじめに
progateで勉強してから時間が経っているので復習のために記事を書く。
HTMLとは?
Hyper Text Markup Languageの略で、Webページを作成するために作られた言語。
基本的な書式
開始タグ(<html>)、終了タグ(</html>)で囲んで書き、囲まれた部分を要素と呼ぶ。
要素の説明
・<!DOCTYPE html>
ドキュメントタイプといい、HTMLファイルがどのバージョンを使って記述されているか表したもの。上記はHTML5(バージョン)で書かれていることを表している。
・<head>
headで囲まれた部分にHTML文章に関する情報を記述する。
・<meta charset="utf-8">
HTMLを書いた文字コードを表している。上記はutf-8で書かれていることを表す。
・<title>
ブラウザのタイトル部分を示しタブの部分に表示される。
・<body>
bodyで囲まれた部分にHTML文章を記述する(ブラウザ上で表示される部分)。
・<h1>
見出しを表すもので、数字が大きくなる程見出しが小さくなる。
・<p>
段落を表すもので、テキストの集まりの段落を指定する。
・<br>
改行する場合に使用する。ちなみにHTML上で改行してもWebページ上では改行されない。また、他のタグと違い終了タグがない。
・<strong>
文字を強調する際に使用する。
・<ul>
箇条書きのリストを表示する際に使用する。
各項目は<li>タグを使用し、項目を数字にしたい場合は<ol>タグを使用する。
・<img>
画像を表示する際に使用する。他のタグと違い終了タグがない。
記述方法は、<img src="画像名.拡張子" alt="文字列">
src属性には画像のパスを、alt属性には画像を表す文字列を記載する。
alt属性は、画像が表示できない場合などに使用される。
・<a>
指定した要素をハイパーリンクにする際に使用する。
記載方法は、<a href="URL">文字列</a>
href属性に移動先のURLを記載する。
まとめ
今回はHTMLについて書いた。これからも簡単な内容でも学習記録、備忘録として気軽に書いていこうと思う。
Gitについて
はじめに
Gitについてまとめていなかったので、備忘録として記載する。
Gitとは?
プログラムソースなどの変更履歴を管理する分散型のバージョン管理システム。
使用する理由は、ファイルのバージョンを管理するために使用する。
使用しない場合最新のファイルが分かりづらくなるというデメリットがあり、複数人で作業する場合は更に最新のファイルが分かりづらくなりファイル探しに無駄な時間がかかってしまう。
また、ファイルのバージョンを戻す(前の)ことが可能。
<用語説明>
・分散型とは複数のコンピュータ等に分散して機能を持たせるという意味。
なのでGitでいうと、各開発者がそれぞれローカルにリポジトリを持ち、必要に応じてリポジトリ間で変更点をやり取りできること。
・リポジトリとは、変更履歴を記録する場所
コマンド
・$ git init
リポジトリを新規作成する時に使用するコマンド。
使用すると.gitディレクトリが作成される。gitコマンドを使用する前に使用するコマンドで実行は1回。
・$ git remote add 〜
Git Hubを使用する際に使用する。
〜についてはGit Hubでリポジトリを作成した際に表示されるもの。
・$ git add <ファイル名>
変更したファイルをステージングエリアに追加するコマンド。
自分の場合は-Aオプションをよく使用する。
・$ git commit
変更したファイルにメッセージを付与してリポジトリに記録するコマンド。
git addコマンドの後に使用される。
-mオプションを付与して、後ろに"メッセージ"を記載して使用している。
メッセージは何を変更したのかが分かるように書く。
例:git commit -m "メッセージ"
--amendで直前のコミットを修正出来る。
・$ git status
変更されているファイルを確認したり、コミットされていないファイルを確認する時に使用する。(Gitで管理されていないもの、管理除外されていないファイルも確認出来る)
・$ git log
リポジトリにコミットされたファイル履歴を確認するコマンド
--onlineオプションで1行で表示することができ、-p ファイル名で差分を確認することが出来る。
・$ git diff
ファイルの変更差分を表示するコマンド。
commitする前に使用される。
--stagedオプションでステージングとコミットの差分が確認でき、HEADを付けるとステージとコミットの差分、ローカルとステージの差分の両方を表示することが出来る。
・$ git push
ローカルリポジトリの内容をリモートリポジトリへ送信するコマンド。
origin <ブランチ名>を付与することで登録したGitHubのブランチに送信出来る。
・$ .git ignore
管理対象から除外したいファイルを指定する場合に使用する。
・$ git rm <ファイル名>
ファイルごとGit管理から削除する。
-rオプションを付与するとディレクトリごと削除出来る。
--cachedオプションで管理からは除外するがファイルは残すことが出来る。
・$ git checkout
ブランチ名を付与するとブランチの切り替えができ、--ファイル名 or --ディレクトリ名を指定すると変更を取り消すことが出来る。
注意点としては、指定したファイル、ディレクトリより上の階層の変更は取り消せない、新規に作成したものについても取り消しが出来ない。
階層の問題についてはドットで解消出来るが、新規のものについては別のコマンドを使用する必要がある。
-bオプションを付けると、ブランチの作成と切り替えを一度に行うことが可能。
・$ git reset HEAD <ファイル名 or ディレクトリ名>
ステージに追加した変更を取り消す際に使用する。
ドットを使用することで全ての変更を取り消すことが可能。
・$ git remote
リモートを表示するコマンド
-vオプションを付けると設定しているリモートリポジトリの情報を表示出来る。
show <リモート名>でより詳しい情報を表示する。
renameを付けると名前を変更できる。
rmを付けると削除ができる。
・$ git fetch <リモート名>
リモートから情報を取得するコマンド。
気を付けたいのが更新されるのは追跡ブランチ(tarcking branch)[origin/master]のみということ。
ここについて説明すると、ローカルにはmasterとorigin/masterが存在していてmasterはローカルの更新を見ていて、orign/masterはリモート側の更新を見ているもの。
つまり、git fetchを実行した場合origin/masterのみ更新されるため、masterを更新するためにはmergeが必要になる。
・$ git pull
fetchと同様でリモートから情報を取得するコマンド。
fetchと違う点は取得からマージまでやってくれるところ。
・$ git branch
ブランチを表示することが出来るコマンド。
-aオプションを付けるとリモートブランチも含めて確認することが出来る。
間違えないために説明するとリモートブランチと追跡ブランチは別物で、リモートブランチとはリモートリポジトリにあるブランチのことである。
-mオプションを付けるとブランチ名を変更することが出来る。
-dオプション を付けるとブランチを削除することが出来る。
・$ git merge
他の人の変更内容を取り込むことが出来るコマンド。
ちなみにmergeした際に同じファイルの同じ行に対して異なる変更を行った場合コンフリクトが起きる。
解消方法は、<<<<<<<と>>>>>>>で囲まれた箇所を訂正すると解消される。
・$ git tag
コミットを参照しやすくするために分かりやすい名前を付けることが出来るコマンド。
-aオプションを付けると注釈付きタグを付けることが可能。
注釈付きタグについて説明するとコメントを付けることが出来るタグのこと。
・$ git show <タグ名>
タグのデータと関連づけられたコミットを表示することができる。
・$ git stash
作業を一時避難する(作業が途中でコミットしたくないもの)ためのコマンド。
listを付けると避難した作業の一覧を表示できる。
supplyで最新の作業を復元できる。
dropで最新の作業を削除でできる。
<用語説明>
・ステージングエリアとは、Gitリポジトリにコミットするファイルを置くためのエリア
Djangoについて
はじめに
pythonでDjangoを初めて使用したので備忘録として記事を書く
Djangoとは?
無料でオープンソースとして公開されているPythonを使用したWebアプリケーションフレームワーク。
インストール方法
$ pip install django
※上記インストールは仮想環境を作成してそこにインストールした方がいい。
理由としては、他のライブラリにも言えることだが仮想環境を構築してインストールしないとライブラリ数が大変なことになるため、管理を簡易的にするためにプロジェクトごとに分けた方がいい。
プロジェクトの作成
$ django-admin startproject <プロジェクト名> .
※最後のピリオドを付けない場合は上記コマンドを実行する前に作業ディレクトリに移動後実行する。
設定変更
時間、言語コードを変更する。
また、静的ファイルのパス、デバッグの設定も変更すること
○プロジェクト名/settings.py
TIME_ZONE = 'Asia/Tokyo'
LANGUAGE_CODE = 'ja'
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
ALLOWED_HOSTS = ['127.0.0.1', 'pythonanywhere.com']
※STATIC_ROOTの記載がない場合、STATIC_URLの下の行に記載する
モデルのインストール
マイグレーションファイルを作成する
$ python manage.py makemigrations
モデルをデータベースに反映させる
$ python manage.py migrate
ウェブサーバーの起動方法
$ python manage.py runserver
アドレスが出力されるのでアクセスする