Python データ構造4種類の一覧 リスト(list),タプル(tuple),集合(set),辞書(dictonary)

名称 リスト タプル 集合 辞書
  list tuple set dictonary
宣言 data = ['aaa','bbb'] data = ('aaa','bbb') data = {'aaa','bbb'}
set()
set({'aaa','bbb'})
data = {'aaa':100,'bbb':200}
dict([('aaa','100'),('bbb','200')])
取得 data[0]
>>> ['aaa']
data[0:2]
>>> ['aaa','bbb']
data[0]
>>> ('aaa')
data[0:2]
>>> ('aaa','bbb')
data[0]
>>> {'aaa'}
data[0:2]
>>> {'aaa','bbb'}
data
>>> {'aaa':100,'bbb':200}
data['aaa']
>>>'100'
data.get('aaa')
>>>'100'
追加 data.append(値)
data += [値]
data.extend([値])
data[0:] = [値]
data.insert(インデックス,値)
イミュータブル ※追加不可 data.add(値)
data |= {値}
data['ccc'] = 300
削除 data.remove(値)
del data[1:2]
data[1:2] =
data.clear()
data =
  data.remove(値)
data.discart(値)
data -= {'aaa','bbb'}
data.pop()
data.clear()
del data['ccc']
data.pop('aaa')
data.pop('aaa','デフォルト値')
data.clear()
含むかの判定     'aaa' in data
'ccc' not in data
'aaa' in data
'ccc' not in data
別のデータ構造への変換 ■文字列
文字列.split(デリミタ)
デリミタ.join(data)
■文字列
data = ('aaa','bbb')
data
>>>('aaa','bbb')
str1,str2 = data
str1
>>>'aaa'
str2
>>>'bbb'
  ■リスト
list = lest(data.keys())
list
>>>'aaa','bbb'
list = lest(data.values())
list
>>>'100','200'
list = lest(data.items())
list
>>>[('aaa','100'),('bbb','200')]
要素数取得 len(data) len(data) len(data) len(data)
ソート sort(data)
sorted(data)
無し イミュータブル 無し 並び順の概念無し  
その他     ■集合 作成
data1 | data2
data1 & data2
data1 - data2
data1 ^ data2
■集合 data1を変更
data1 |= data2
data1 &= data2
data1 -= data2
data1 ^= data2
■キーの一覧
data.keys()
■値の一覧
data.values()
■キーと値の組の一覧
data.items()

Python exeファイル作成 pyinstaller

pyinstaller をインストールすることで、Pythonのファイルをexe化することができます。
 
■pyinstallerをインストール
 
コマンドプロンプトから以下コマンドを実行
pip install pyinstaller
 
■exe化
コマンドプロンプトから以下コマンドを実行
pyinstaller pythonファイル名 [--onefile] [--noconsole]

Python フォルダ内再帰検索 ファイル入出力 文字列型日付の比較方法 サンプル

■今回やりたかった事

フォルダ内にある複数のログファイルを参照して、

ログの最終出力日時が〇月〇日以降のファイル名をリスト化する

 

■ソース
import glob     #フォルダパス取得用ライブラリ
import os       #テキスト操作用ライブラリ
import datetime #日付時刻チェック用ライブラリ

 

print('start')

 

#取込対象フォルダ指定
files = glob.glob(r'C:/Users/tera_log/Desktop/tmp_folder/*.tsv', recursive=True)

#結果出力ファイル名指定 

output_file_name = r'C:/Users/tera_log/Desktop/tmp_folder/target_file_name.txt'

 

#出力ファイル初期化 ※必須ではない処理
f = open(output_file_name, 'w')
f.close()

 

#指定したフォルダ内のファイルパス分ループ
for file_path in files:
    #対象ファイルを開き、全行読み込む
    tmp_file = open(file_path)
    tmp_lines = tmp_file.readlines()
    tmp_file.close()

 

    #行分ループして日付最大値を取得
    max_date = datetime.date(2000,1,1)
    for line in tmp_lines:
        #日付を取得 ※日付の出力形式は「2000-01-01」
        file_date = datetime.date(int(line[0:4]),int(line[5:7]),int(line[8:10]))

        if max_date < file_date:
            max_date = file_date
    
    #最大値と対象日付を比較し、日付が2021-01-01以降ならならファイル名をテキストファイルに出力する    
    target_date = datetime.date(2021,1,1)
    if max_date >= target_date:
        print(os.path.basename(file_path) + '\t' + str(max_date))
        #outputファイルを開く
        f = open(output_file_name, 'a')
        f.write(os.path.basename(file_path) + '\t' + str(max_date) + "\n")
        f.close()
 

print('end')

 

■注意点

Windowsのフォルダパス指定方法>

・¥(バックスラッシュ)だとエスケープ処理される

・/(スラッシュ)は普通に使えるので、スラッシュが便利

・シングルクォートの前にrを付けると、特殊文字も文字として扱う(raw文字列)

例)r'C:/Users/tera_log/Desktop/tmp_folder/*.tsv'

 

<文字列を切り取る部分>

 ・文字列型変数に『[α:β]』を付けるとαからβまでを切り取りできる

  α:開始位置 ※0始まり

  β:終了位置 ※0始まりでカウントした文字数プラス1する

例)最初の4文字を取得したい場合は[0:4]を指定する

※日付の出力形式は「2000-01-01」

tmp_string = '2000-01-01'

print(tmp_string[0:4])

>>>2000

 

python print文の使い方

■入力した文字を出力

print('hello world')

--------------------------

hello world

 

■カンマ区切りで、複数出力 ※出力は半角スペース区切りになる

print('aaa','bbb')

--------------------------

aaa bbb

 

■複数個printを書くと改行して出力される

print('aaa')

print('bbb')

--------------------------

aaa

bbb

 

■end='_' を書くと、改行の代わりに区切り文字を指定できる

print('aaa',end='x') 

print('bbb',end='x')

print('ccc',end='x')

--------------------------

 aaaxbbbxcccx