TIL

Today I Learned. 知ったこと、学んだことを書いていく

ファイルを読み込み(と書き込み)

ファイルの読み書きにはopen()を使う。

第一引数には対象のファイルのパス、第二引数にはモードを指定する。

第二引数について

引数 モード
r 読み取り
w 書き込み
a 追加書き込み


読み込みを行う場合

>>> with open('/Users/tamago324/test.txt', r) as f:
...   read_data = f.readline()
...
>>> read_data
'hello!\n'

withを使えば、クローズ処理が必要なくなる。

読み込むメソッド

  • read(): すべて読み込む
  • readline(): 1行読み込む
  • readlines(): すべて読み込み、リストを返す


書き込みについて少しだけ(2017/10/14)

書き込みのメソッドであるwriteline()はリストを書き込むメソッドとなっているが、要素ごとに改行がされない。そのため、要素を\nで結合してあげる必要がある。

改行なし

words = ['hello', 'world', '!!!']
with open('test.txt', 'w') as f:
    f.writeline(words)

test.txt

helloworld!!!

改行あり

words = ['hello', 'world', '!!!']
with open('test.txt', 'w') as f:
    f.writeline('\n'.join(words))

test.txt

hello
world
!!!

リストの要素を書き込むときには改行で結合する!


参考文献

intを指定した桁でゼロ埋めする

Pythonでintの値を0埋めする方法。

色々方法はあるらしい。3つだけ紹介(ほぼ同じだけど)。
f-stringの書き方も追記(2018/03/29)

>>> '{0:02d}'.format(1)
'01'
>>> '{:02d}'.format(1)
'01'
>>> '{:02}'.format(1)
'01'


str.formatについてはこちらのサイトに記載されていました。

{}の中に:を書き、その右側に指定したい書式の型を書くことで、書式を指定することができます。

02dというのが書式ということになる。どういう意味なのか??

こちらのサイトによると:2dは2桁で空白埋めするということらしい。ということは:02dは2桁で0埋めということになる!

また、dは10進数ということなので、省略もできる。


f-stringでの書き方(2018/03/29 追記)

f-stringでの記述を知ったので、追記
><^で寄せる位置も決められるらしい!!面白い!!

>>> f'{1:0>2}'    # 2桁の左寄せ
'01'

>>> f'{1:0<2}'    # 2桁の右寄せ
'10'

>>> f'{1:0^3}'    # 3桁の中央寄せ
'010'

>>> f'{1:a^3}'    # 文字でも埋められる
'a1a'

>>> f'{1:^3}'    # 殻の場合、空白で埋められる
' 1 '

参考文献

GroupBoxの枠線を非表示にする - VB.net

タイトルの通り

Private Sub GroupBoxHideBorderLine(ByVal sender As Object, 
        ByVal e As System.Windows.Forms.PaintEventArgs) _
        Handles ImportDataTypeGroupBox.Paint 

    Dim rct As Rectangle = sender.ClientRectangle 

    ControlPaint.DrawBorder3D(e.Graphics, rct, Border3DStyle.Flat,
        Border3DSide.Middle) 
    rct = Nothing 
End Sub 



参考文献

GroupBoxの枠線を非表示にする方法 | 電気系おじさん日記 - 楽天ブログ

現在時刻を取得 - VB.net

Dim now As Date = System.DateTime.Now

2017/10/30 追記

Date.Nowでいろいろ取得

Date.Now.ToLongTimeString()    ' 18:53:20
Date.Now.ToShortDateString()   ' 2017/10/30



参考文献

resetしてしまったコミットを復元させる

reset --hardで消してしまったコミットを復元させる方法

過去の履歴を表示

reflogで確認できる。

$ git reflog HEAD

復元したいコミットのハッシュを確認する。

コミットの復元

reset --hardを使えば実現できる。

$ git reset --hard 復元したいコミットのハッシュ

これでそのコミットまでの状態が復元される。



参考文献

誤ったgit reset からの復活の呪文 - rasuyuk.log

ISO-8601の日付の文字列をdatetimeに変換

サードパーティモジュールのdateutilを使うと楽に変換できた。(dateutilのドキュメント)

dateutil.parser.parse()を使うことで変換できる。

まずはdateutilをpipでインストール

$ pip install python-dateutil

例)2017-11-16T13:00:00+09:00という文字列をdatetimeに変換

>>> import dateutil.parser
>>> dateutil.parser.parse('2017-11-16T13:00:00+09:00')
datetime.datetime(2017, 11, 16, 13, 0, tzinfo=tzoffset(None, 32400))



参考文献

dateutil/dateutil: Useful extensions to the standard Python datetime features

github.com

How do I translate a ISO 8601 datetime string into a Python datetime object? - Stack Overflow