■
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)
"""
■
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
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。
一人ってさびしいなぁ
今日は久しぶりに散歩しました。
就職してからのことを振り返りました。
大学の友人とは連絡をとらなくなって、会社での人間関係は希薄でとてもさびしいです。素敵な方との出会いがありますようにと心の底から思いました。
縁結びのお守りでも買いに行きたいな
3Dプリンターでドアストッパー作ってみた
家で猫を飼っているのですが、寝室には基本的に入れないようにしています。
たまにベッドの上でおしっこするんですよね...(2敗)
今までは使ってないダンベルを扉の前に置いておもしにしてました。
ただ、重くて動かすのが面倒くさいんですよね。
そんなわけでドアストッパーを作ってみました。STLのデータはgrabcadから
「door stop」で検索して適当なの選んでダウンロードしました。スライスソフトはCURAです。
印刷ベッドが少し白いのはPLAがなかなか定着せずスティックのりを使ったからです。
完成したのはいいんですけどスティックのりのせいでなかなか剥がしづらかったです。
さて、肝心な効果はというと...
結論から言うと ダメでした! 市販のドアストッパーみたいにゴム製じゃないのでスベるスベる... 飼い猫の突進で一発でドアが開きました。
ドアストッパーの裏にのりでもつけとくかぁ(´;ω;`)
ロシア語勉強始めます
こんな本買いました!
少しづつですが、時間をみつけて勉強していこうと思います。