Python コード

csvファイルを1行づつ読み込み、特定の列に特定の値があった場合その行をスキップする。それ以外ならリストに入れ、新しく作ったcsvファイルに出力するコード。ハイエナコード。

 

 

# -*- coding: utf-8 -*-

#tkinter(ウィンドウ作成用)
import tkinter
import tkinter.filedialog
import tkinter.messagebox
#パス用
import os
#プログラムの終了用
import sys
"""
#実行速度
from time import time
"""
#csv読み込み、書き込み用
import csv


#--------------------------------------------


#ファイルの選択
root = tkinter.Tk()
root.withdraw()
root.attributes('-topmost', True)
root.lift()
root.focus_force()
fTyp = [("","csv")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('CSV加工','加工するファイルを選択してください。')

#ファイルパス取得
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)

#ファイルを選択していない場合プログラムの終了
if  file ==  "":
    tkinter.messagebox.showinfo('CSV加工','処理は中断されました。')
    sys.exit()

#ファイルパスからフォルダ名取得(出力用に)
outfile = os.path.dirname(file) + "/out.csv"


"""
#実効速度測定開始
start1 = time()
"""

out_list = []
#csv読み込み
with open(file, newline='') as csvfile:
    for row in csv.reader(csvfile):
#3列目が8以外ならリストに入れる
        if  row[2]  != "8":
            out_list.append(row)

#csv書き込み
with open(outfile, 'w') as f:
    writer = csv.writer(f)
    writer.writerows(out_list)


"""
#実行速度測定終了&表示
proc_time = time() - start1
print(proc_time)
"""

#処理完了メッセージ
tkinter.messagebox.showinfo('CSV加工',"加工できました。")

VBSコード

csvファイルを1行づつ読み込み、特定の列に特定の値があった場合その行をスキップする。それ以外なら新しく作ったcsvファイルに出力するコード。ハイエナコード。


Option Explicit
'------------------
  Dim objFso
  Dim objWshShell
'------------------
  Dim InfilePath
  Dim OutfilePath
'------------------
  Dim InObjFile
  Dim OutObjFile
'------------------
  Dim OutFileCreate
'------------------
  Dim instr
  Dim workary
'------------------
  Dim incnt
  Dim skipcnt
  Dim outcnt
'------------------

  
  Set objFso         = WScript.CreateObject("Scripting.FileSystemObject")
  Set objWshShell    = WScript.CreateObject("WScript.Shell")

 
  '入力ファイルパス
  InfilePath = "ファイル名.csv"
  Set InObjFile = objFso.OpenTextFile(objWshShell.CurrentDirectory & InfilePath )


  '出力ファイルパス
  OutfilePath        = "ファイル名.csv"


  '前回出力ファイル削除
  If objFso.FileExists(objWshShell.CurrentDirectory & OutfilePath) Then
    'ファイルが存在する場合の処理
    objFso.DeleteFile objWshShell.CurrentDirectory & OutfilePath
  End If


  '出力ファイル作成
  Set OutFileCreate  = objFso.CreateTextFile(objWshShell.CurrentDirectory & OutfilePath)
  OutFileCreate.Close


  '出力ファイルオープン
  Set OutObjFile     = objFso.OpenTextFile(objWshShell.CurrentDirectory & OutfilePath, 8)

 

  'メイン
  If Err.Number = 0 Then

    'カウンタの初期化
    incnt   = 0
    skipcnt = 0
    outcnt  = 0

    'ファイルの内容を1行ずつ配列に格納
    Do Until InObjFile.AtEndOfStream

      
      '中身を保ったまま配列の大きさを拡張
      'redim Preserve aryRet(incnt)

      '1行読み込んで配列に格納
      'aryRet(incnt) = InObjFile.ReadLine


      '行を変数へ
      instr = InObjFile.ReadLine


      'カンマ区切りで分割して配列に
      workary = Split(instr,",")

      '特定の値はスキップ    ↓例:2列目の値が"100"ならスキップ
      If workary(1)  =  """100"""  Then
          'スキップ件数カウント
          skipcnt = skipcnt + 1
      Else
          'csv出力
          OutObjFile.WriteLine(instr)
          '出力件数カウント
          outcnt = outcnt + 1
      End If

      '入力件数カウント
      incnt = incnt + 1

    Loop

    'ファイルをクローズ
    InObjFile.Close
    OutObjFile.Close

    '件数表示
    WScript.Echo incnt & "件読み込み," & skipcnt & "件スキップ," & outcnt & "件出力"

  Else
    'エラーの内容(Description)出力
    WScript.Echo "ファイルが開けません: " & Err.Description
  End If

 

積み立てNISAを始めて2か月

S&P500と全世界株式のETF買ってます。

今年から働き始めたのでまだ月15,000(7500円ずつ)になりますが

20年後にはどうなっているのか楽しみです。

 

最近は為替にも興味が出てきました。(レバレッジには絶対に手を出しませんが...)

YAHOO!JAPANファイナンススイスフラン、英ポンド、米ドルと円のチャートをよく見てます。

為替を見てると国際ニュースなんかにも興味が出てきて1日の楽しみが増えました。

為替や株って面白いですね!

 

さーて、今月は艦これの夏イベに集中するかー

pythonで画像を縦長と横長にわける

変数名は適当

普段Twitterで集めている絵師さんの絵を縦長と横長に整理したかった。

コピペするときはインデントに注意。

import os
from PIL import Image
import shutil

path = "画像の入っているフォルダのパス" + "/"
tatenaga = "縦長画像の出力先フォルダのパス" + "/"
yokonaga = "横長画像の出力先フォルダのパス" + "/"

a = os.listdir(path)
for i in a:
    img = Image.open(path + i)
    width,height = img.size
    if height > width:
        b = shutil.copy(path + i, tatenaga + i)
    if height < width:
        c = shutil.copy(path + i, yokonaga + i)

縦横同じサイズの画像も分けたかったら出力先とif文追加すればok。

 

一人ってさびしいなぁ

f:id:inaka_blog:20210530202005j:plain

今日は久しぶりに散歩しました。

就職してからのことを振り返りました。

大学の友人とは連絡をとらなくなって、会社での人間関係は希薄でとてもさびしいです。素敵な方との出会いがありますようにと心の底から思いました。

縁結びのお守りでも買いに行きたいな

3Dプリンターでドアストッパー作ってみた

家で猫を飼っているのですが、寝室には基本的に入れないようにしています。

たまにベッドの上でおしっこするんですよね...(2敗)

今までは使ってないダンベルを扉の前に置いておもしにしてました。

ただ、重くて動かすのが面倒くさいんですよね。

そんなわけでドアストッパーを作ってみました。STLのデータはgrabcadから

「door stop」で検索して適当なの選んでダウンロードしました。スライスソフトはCURAです。

f:id:inaka_blog:20210523164028j:plain

印刷の最初のほう

印刷ベッドが少し白いのはPLAがなかなか定着せずスティックのりを使ったからです。

f:id:inaka_blog:20210523164815j:plain

完成したもの

完成したのはいいんですけどスティックのりのせいでなかなか剥がしづらかったです。

 

 

さて、肝心な効果はというと...

 

 

結論から言うと ダメでした! 市販のドアストッパーみたいにゴム製じゃないのでスベるスベる... 飼い猫の突進で一発でドアが開きました。

 

ドアストッパーの裏にのりでもつけとくかぁ(´;ω;`)