pythonは行ごとにテキストファイルを切り分ける方法を実現します。
本論文の例は、pythonがテキストファイルを行単位で分割する方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
pythonスクリプトはshellコマンドを使用してテキストの操作を実現します。これらのコマンドはコード量を大幅に削減します。
たとえば、行ごとにファイルを分割し、分割して得られたファイルリストを返します。内部に作成されたスプリットコマンドで分割できます。得られたファイルリスト名を返すために、先にファイルを自分のサブディレクトリに切り分けてから、OS.listdirを通じてすべてのファイルを取得して、これらのファイルを前のレベルのディレクトリ(すなわち関数パラメータ指定の新しいディレクトリ)に移動して、自己構築サブディレクトリを削除して、最後にファイル名のリストに戻ります。
コードは以下の通りです。問題が発見されたら、ご指摘ください。
ここで述べたように、皆様のPythonプログラムの設計に役に立ちます。
pythonスクリプトはshellコマンドを使用してテキストの操作を実現します。これらのコマンドはコード量を大幅に削減します。
たとえば、行ごとにファイルを分割し、分割して得られたファイルリストを返します。内部に作成されたスプリットコマンドで分割できます。得られたファイルリスト名を返すために、先にファイルを自分のサブディレクトリに切り分けてから、OS.listdirを通じてすべてのファイルを取得して、これらのファイルを前のレベルのディレクトリ(すなわち関数パラメータ指定の新しいディレクトリ)に移動して、自己構築サブディレクトリを削除して、最後にファイル名のリストに戻ります。
コードは以下の通りです。問題が発見されたら、ご指摘ください。
#
def make_dirs(path):
if not os.path.isdir(path):
os.makedirs(path)
#
def get_total_lines(file_path):
if not os.path.exists(file_path):
return 0
cmd = 'wc -l %s' % file_path
return int(os.popen(cmd).read().split()[0])
# split_file_by_row:
# filepath:
# new_filepath:
# row_cnt:
# suffix_type: ,
# return:
def split_file_by_row(filepath, new_filepath, row_cnt, suffix_type='-d'):
tmp_dir = "/split_file_by_row/"
make_dirs(new_filepath)
make_dirs(new_filepath+tmp_dir)
total_rows = get_total_lines(filepath)
file_cnt = int(math.ceil(total_rows*1.0/row_cnt))
command = "split -l%d -a2 %s %s %s" % (row_cnt, suffix_type, filepath, new_filepath+tmp_dir)
os.system(command)
filelist = os.listdir(new_filepath+tmp_dir)
command = "mv %s/* %s"%(new_filepath+tmp_dir, new_filepath)
os.system(command)
command = "rm -r %s"%(new_filepath+tmp_dir)
os.system(command)
return [new_filepath+fn for fn in filelist]
Pythonに関する詳細について興味がある読者は、本駅のテーマを見てください。「Python関数使用テクニックのまとめ」「Python文字列操作テクニックのまとめ」「Python入門と階段の経典教程」「Pythonファイルとディレクトリ操作の概要」ここで述べたように、皆様のPythonプログラムの設計に役に立ちます。