テキストファイルのマージソート
最初に作成したのは実行フォルダのtxtファイルを全て読み
行ごとにソートしたものをout.textファイルを作成して書き込むもの
空行を抜く。
ubuntuのテキストエディタで\u3000という空文字のようなものが入っているようなのでspaceに変換
起動オプションで抽出条件追加
import sysを追加すれば、sys.argvにリスト形式で入っている。
sys.argvの最初には プログラム名が入っているので、注意。
作成環境
ubuntu 18.04
Python 3.7.5
追記
端末から同様のことを 1行で🐠
コマンドライン フォルダ内のテキストファイル(*.txt)を読み、ソート、抽出してout2.textに出力する
プログラムリスト
#フォルダ内のテキストファイル(*.txt)を読み、ソートしてout.textに出力する
#追加 起動オプションが指定されている場合その文字が含まれるものを抽出 or 条件
import sys
import os
def get_list_check(line_word):
if len(sys.argv) == 1:return True
for check_word in sys.argv[1:]:
if line_word.find(check_word)>-1:
return True
return False
files = os.listdir("./")
print(len(sys.argv),sys.argv)
total_list=[]
for filename in files:
if len(filename)>4:
if filename[-4:] == ".txt":
with open("./"+filename) as f:
total_list += f.readlines()
total_list.sort()
total_list = [i.replace("\u3000"," ") for i in total_list if i != "\n" and get_list_check(i)]
with open("./out.text", mode='w') as f:
for i in total_list:
f.write(i)