パーソナルブログメモリ

a = [1, 1]
for _ in "*" * 999: a += [sum(a[-2:])]
print(a)

Python3 フォルダ内のテキストファイル(*.txt)を読み、ソート、抽出してout.textに出力する

2020-08-19 | Python

テキストファイルのマージソート

最初に作成したのは実行フォルダの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)


最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。