ishii

Pythonでファイル分割

どうもいすいです。

前に紹介したPythonでテキストファイルを分割する方法のコードだけ紹介します。

詳しい解説は以下を参照ください。↓↓↓

https://bitengineer.net/wp-admin/post.php?post=63&action=edit

コード

separate.py

import sys

count = 0
idx = 0

in_file = sys.argv[1]
num_file = int(sys.argv[2])
out_files = []

# 分割ファイルをリストに入れる
for i in range(num_file):
    out_files.append('{0}_{1}'.format(i+1, in_file))

# ファイルの行数をカウントし、countに入れる
with open(in_file, 'r', encoding='utf-8') as f:
    for line in f:
        count += 1

line_count = count / num_file
n = 0

# ファイルの総行数を表示する
print('line_count : {0}'.format(count))


#分割実行部分
with open(in_file, 'r', encoding='utf-8') as i:
    for out_file in out_files:
        f = open(out_file, 'w', encoding='utf-8')
        while True:
            line_i = i.readline()
        
            if idx <= line_count:
                f.writelines(line_i)
                print('now file : {0}, current line : {1} / {2}'.format(out_file, int(idx + n * line_count), count))
            else:
                idx = 0
                break
        
            idx += 1
        n += 1
        f.close()

あとはコマンドプロンプトなどで

python separate.py <分割したいファイル> <分割したい数>

などと入力して2~3分待てばOKです。

C#やWPFで参考すべきサイト

こんにちは弱小エンジニアのいすいです。

最近WPFでの開発をすることになりました。

さて、とWPFの書籍を開いてみると、、、

まったくわからん( ´∀` )

WPFって書籍少ないし、日本語の参考サイトも少ないんですよね。。汗

そんなこんなで本日は、
WPF初級学習で参考になったサイトを紹介します。

新しく発見したサイトは随時更新します。

それでは行ってみよう!!!

↓↓↓

ピーコックアンダーソン

見やすく、分かりやすい。WPF初心者にはうってつけ

一つ目が、ピーコックアンダーソンさんのブログです。

この方は17年C#に携わってきた現役のプログラマーです。

Udemyでは20以上のコース、書籍も多数出版といった実績も持っています。

こちらのブログを紹介する一番の理由は、
WPF初心者にわかりやすいという点です。

たいていのWPF関連サイトでは、専門用語が多かったり、手順を省略していたり、0から教えてくれるものはなかなかありません。

それに対して、ピーコックアンダーソンさんのブログでは、WPF初心者に焦点をあてて解説いただいています。

また、レイアウト、デザインが美しいのもおすすめの理由ですね。

随時更新します。

今は一つだけですみません。。

テキストファイルをpythonで分割する

テキストファイルがでかすぎて開けない時pythonの簡単な分割コードを紹介します。

テキストファイルが開けない事件

開発中では以下のようなログファイルというのを吐き出すようにしています。

ログファイル

アプリ開発でしたら、「どんな操作した」「どんな通信をした」「どんなエラーがでた」などが記載されていきます。

このファイルを開いて中身を確認するのですが、だいたい1GBを超えたあたりから、VScodeでも開けず、メモ帳でも開けなくなってしまいます。

こうなったらファイルを分割するしかありません。


テキストファイルの分割方法

ネットで調べた結果、テキストファイルの分割には以下の方法があるみたいです。

  • フリーソフトを使う
  • windowsPowerShellでコマンドを入力する

フリーソフトですが、結構古いものが多いです。Windows10がサポート対象かチェックする必要があります。

WindowsPowerShellでは1行で処理ができますが、正直ちょっと難しいです。

結果、よくわかんないし、pythonでやっちゃえばいいじゃん的な感じで書いてみました。


pythonでテキストファイルを分割

前提として、テキストファイル(画像や動画、バイナリデータではないファイル。.txtなど)を行数に対して2分割や3分割にするコードになります。

python3.8を使っており、標準モジュールで完結します。(モジュールの追加なし)

pythonが入ってない人は、pythonの最新バージョンをインストールしてから初めてください。ネットでpythonホームページに行って、インストールするだけです。(マックブックには標準で入ってます)

➀メモ帳にコードを保存する

メモ帳を開き、

import sys

count = 0
idx = 0

in_file = sys.argv[1]
num_file = int(sys.argv[2])
out_files = []

# 分割ファイルをリストに入れる
for i in range(num_file):
    out_files.append('{0}_{1}'.format(i+1, in_file))

# ファイルの行数をカウントし、countに入れる
with open(in_file, 'r', encoding='utf-8') as f:
    for line in f:
        count += 1

line_count = count / num_file
n = 0

# ファイルの総行数を表示する
print('line_count : {0}'.format(count))


#分割実行部分
with open(in_file, 'r', encoding='utf-8') as i:
    for out_file in out_files:
        f = open(out_file, 'w', encoding='utf-8')
        while True:
            line_i = i.readline()
        
            if idx <= line_count:
                f.writelines(line_i)
                print('now file : {0}, current line : {1} / {2}'.format(out_file, int(idx + n * line_count), count))
            else:
                idx = 0
                break
        
            idx += 1
        n += 1
        f.close()

上記コードを張り付けて、separate.pyなどと名前を付けて保存します。

②フォルダに移動する

分割したいファイルとseparate.pyを同じディレクトリ(フォルダ)に移動します。(移動させなくてもよいが、相対パス・絶対パスを書く必要がなくなる)

エクスプローラー

コマンドプロンプトを起動します。windowsなら絶対入っているので、スタートメニューから探してください。マックブックはターミナルってやつですかね。

③ファイルのあるフォルダに移動する
cd <ファイルのあるフォルダのパス>

上記をコマンドプロンプト上で実行します。cdコマンドで移動したいフォルダに移動できます。以下が例になります。(マックブックの人はマックブックのコマンドに置き換えてください)

フォルダに移動

⑤separate.pyを実行する
python separate.py <分割したいファイル> <分割したい数>

上記をコマンドプロンプト上で実行します。以下が例になります。例ではsample.txtを2分割しています。

separate.py実行

ここで注意してほしいのが、分割する境界の基準が行数になっているので、ファイルのサイズが均等に分割されるわけではありません。

⑥処理が完了するまで待つ

separate.pyを実行したら以下の表示がされるはずです。

実行中の表示

line_countはファイルの総行数です。now_fileは分割先のファイル名(<数字>_<もともとのファイル名>となっています)です。current lineは実行中の行数です。

処理が終わると、以下のように番号が付けられたファイルが作成されているはずです。番号は昇順でつけられています。お好みでファイル名を変えてください。

実行後ファイルが作成されている

ちなみに、ソースコードの12行目でファイル名のフォーマットは変えられます。

以上で分割完了です!おつかれさまでした。

もしうまくいかなかったら

以下の問題がないか確認してみてください

  • pythonがインストールされていない
  • コマンドのスペルミス(空白が多い, ファイル名ミス, 引数の数があっていない)
  • フォルダに分割対象ファイルとseparate.pyが一緒に入っていない
  • フォルダに移動できていない

未経験からITへ

初めまして。

未経験からITベンチャーへ入社して9か月目の弱小エンジニアのいすいです。

このブログでは未経験プログラマーが日々の業務で感じたことを淡々と投稿していきます。年内に毎日投稿を目指したいと思っています。

自己紹介

2020年3月某理系私立大学物理学科卒業。現在23歳社会人一年目です。

勤め先は従業員20人ほどの受託開発メインのITベンチャーです。

会社のストレスからIBS(過敏性腸症候群)診断され、常におなかいたいです。いつか自社開発に行きたいです。。(´;ω;`)

いつか自社開発に行きたい。。(´;ω;`)

テスト漬けの日々

しんどいし、眠い

現状の話をしますと、自分は今年(2020年)の7月~今でテスターをしています。

知らない人のために伝えときますが、テストって期末とか中間のテストではなくてソフトウェアテストのことです。

ソフトウェアテストとは、作ったシステムだったりアプリだったりを、テスト仕様書を見ながらバグがないか細かくチェックすることですね。


未経験プログラマーは最初テスターから始まることが多いと思います。

正直言うと、
これがほんっっっっっっっっっとにしんどいです!!!笑笑

しんどい人


プログラミングなら何時間も続けられますが、テストは全然やる気がおきません。

そんな中で何時間も集中するのはほんとに苦行です。

それが何か月と続くと心が折れてきます。そうするとバグを見逃すことが増えます。

そして怒られます→また頑張ります→心が折れてきます→バグを見逃します→怒られます。

その繰り返しです。

現在12月もテスターのままですが、自分は何回も怒られて、すでに2回体調を崩しています笑笑(過敏性腸症候群でした)
「ほんとはプログラマー志望なのに。。」とか「会社辞めたい」とか思うレベルできついです。

エンジニア志望の方にお伝えしときますが、テストは本当に体力も精神力も使う仕事です。覚悟しましょう。笑笑

物理かプログラミングか

物理のイメージ

少し時空をさかのぼり、なぜ自分がITを選んだのかお話ししましょう。

高校で物理が好きになり、大学では物理を専攻していました。

プログラミングの方は授業も一部ありましたが、大学3年までプログラミングは苦手で大っ嫌いでした。笑

それが、大学4年のプログラミングの授業ではなぜかできたんですよね笑


今思うと3年までは授業なんか聞かず、課題を人に見してもらうだけでしたが、
4年生では最初からちゃんと真面目に受けてたので、基礎ができたのだと思います。

そこからは授業外でもプログラミングを触るようになり、「肉体労働しなくていいし、給料もそこそこだし、楽しいし、プログラマーって天職じゃね!?」と思って、4年の6月に志望をITに急遽変更しました。

物理学科を卒業して結局ITってどうなの?と葛藤がありましたが、今では後悔していません。

むしろエンジニア力をつけて物理に戻るのもありかなと思っているレベルです。(物理屋さんは意外とITに詳しくない人が多いので、IT人材は必要とされているのです)

今後

まだ不定期ですが、投稿を増やしていきます。
役に立つ情報も入れられるようにします。

しばらくは鬱テスターですが、頑張ります!笑笑

PAGE TOP