重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Pythonを使用して、

header.txt
body.txt  ←これをpythonで出力しています
footer.txt

というファイルを単純に結合して、index.htmlとして出力したいです

が、ネット検索をしますと、複雑な処理の記事しか見つからず、単純に
マージします方法が見つかりません

単純なマージ方法で良いので教えてください。

A 回答 (2件)

with open('index.html', 'w') as fo:


 for f in ['header.txt', 'body.txt', 'footer.txt']:
  with open(f, 'r') as fi:
   fo.writelines(fi.readlines())
    • good
    • 0
この回答へのお礼

ありがとうございますっ
すごいですっ
期待通りの結果が出力されましたっ

お礼日時:2021/05/11 08:58

> ネット検索をしますと、複雑な処理の記事しか見つからず、単純に


マージします方法が見つかりません

あー、それは単純に言うとPythonの仕事じゃないから、ですよ。
OSの仕事です。
正確に言うとOSのコマンドの仕事だから、です。

例えばUNIX/Linuxだと単純なファイルマージは、貴方の例だと

cat header.txt body.txt footer.txt > index.html

とやっちゃいます。Pythonなんかのスクリプト言語を使う場合は、「もっと細やかな事をやりたい」場合なんですよね。大雑把で良ければOSのコマンド使った方が色々と早いのです(と言うか、そのためにOSのコマンドが存在する)。

じゃあ、全部Pythonで行えないのか、と言うとそういうわけでもなくって、何故に「スクリプト言語」と呼ばれるのか、その理由の一端が「プログラミング言語内からOSのコマンドを実行出来る」から、です。
最も単純な例だと

import os

しちゃって上のコマンドを文字列にしちゃってos.system()に渡しちゃう事。

os.system("cat header.txt body.txt footer.txt > index.html")

そうすれば、Python内からOSのコマンドが呼び出せて実行出来ます。
が。
問題は、この場合、Pythonが各OS(WindowsとかUNIX/LinuxとかMacOS Xとか)の差違を吸収してくれないんですよね。少なくともDOSコマンドとUNIXのコマンドはだいぶ違うので困ったちゃんです。
多分WindowsでのDOSコマンド流用版は

os.system("type header.txt body.txt footer.txt > index.html")

なんじゃないかしらん。
Windowsあまり使わないんで詳しくは知りません。"DOS コマンド ファイル 結合"とでもググって調べてみてください。

また、最近では

import process

して

process.run("hoge")

する事が流行ってるそうです。こっちも"Python process.run"ででもググって調べてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます
OSのコマンドを打ちます方法もあるのですね
OSコマンドの辺り、Perlで経験ありますけれど同じ要領でしょうね

お礼日時:2021/05/11 09:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!