(アプリ作ったとかではないので期待しないでください)
どうもカエルです。
私は今までいろいろプログラミング言語に触ってきましたが、どれも中途半端ばかり、Hello world、for文、if文、while文・・・
で、これで何かつくれるの?
配管工のおじさんが、悪い亀にさらわれた姫様を助けるゲームだったり、同じ色のブロックを4つ揃えたら消えるゲームを作れたりするの?と。
まるで高校ではじめて数学を習ったときに社会で役に立つの?的な疑問を抱いていました。
でも、さて、なんか効率悪いな、こういうアプリあったらいいんだけどな。と思う始末。高度な数学知識はもちろん必要で、プログラミングは必須となりました。
あー、C言語で挫折したしな。ブログを書いているせいかHTMLやCSSはなんとなく分かるんだけど、動きのあるものは作れないしな。JavaScriptやPythonなんかは最低でもできなきゃいかんか。
んで、PythonとかJavaScriptってどこから始めるの?またHello world、for文、if文、while文・・・ですか?
挫折する未来しか見えない
ということで今回はChatGPTさんにお越し頂いて、とある作業の効率化を依頼した話。
Pythonを触ったことのない人が、Pythonのコードに何が書かれてるのかも分からないけど、なぜか実行できた話。
ようこそChatGPT
助けて、ChatGPT~
どうしましたか?何かお困りのことがあるのでしょうか?
複数の.txtファイルをまとめて一つのファイルにしたいでござんす
はい、Pythonを使って複数の.txtファイルをまとめて一つのファイルにすることはできます。
それが、.txtファイルは50項目以上あって、定型文としてある、最初の19行を削除して、結合したときに行間あけたいから、一行空白をいれてほしいんですが・・・
・・・
出来ますよ
有能~!!!
以下、送られてきたPythonコード
import os
# 処理するTXTファイルが格納されているディレクトリのパス
input_dir = "/path/to/txt/files"
# 結合後のTXTファイルの保存先
output_file = "/path/to/output.txt"
# 処理するTXTファイル名のリストを取得
file_list = os.listdir(input_dir)
# 結合後のテキストを格納するリストを用意
output_lines = []
# ファイルごとに処理を行う
for file_name in file_list:
# TXTファイル以外はスキップ
if not file_name.endswith(".txt"):
continue
# ファイルを開いて最初の19行を削除して、1行空白を入れる
with open(os.path.join(input_dir, file_name), "r", encoding="utf-8") as f:
lines = f.readlines()
lines = lines[19:]
lines.insert(0, "\n")
# 処理結果をリストに追加
output_lines.extend(lines)
# 結合後のテキストをファイルに書き込む
with open(output_file, "w", encoding="utf-8") as f:
f.writelines(output_lines)
上記コードでは、以下の処理を行っています。 処理するTXTファイルが格納されているディレクトリのパスと、結合後のTXTファイルの保存先を指定します。 os.listdir関数を使用して、指定したディレクトリ内にあるファイル名のリストを取得します。 TXTファイルのみを処理対象にし、ファイルごとに以下の処理を行います。 open関数を使用してファイルを開きます。 readlinesメソッドを使用して、ファイルの中身を1行ずつ読み込みます。 最初の19行を削除し、1行空白を追加した後、リストとして保存します。 extendメソッドを使用して、処理結果を結合後のテキストを格納するリストに追加します。 open関数を使用して、結合後のTXTファイルを開きます。 writelinesメソッドを使用して、結合後のテキストをファイルに書き込みます。 注意点として、上記コードでは全てのファイルを一度に読み込んでいますので、処理するファイルが大きくなる場合にはメモリ不足のエラーが
ちょ、ちょっと待てーーーーー!!!!
わっかんないよ、何言ってるか、わっかんないよ!
こちとらPython触ったことすらないんだよ。C言語ではコンパイラが必要だったけど、Pythonではいるの?くらいの知識なんだよ。
と、いうことで、ゆっくり聞いてみました。
Pythonコードはテキストドキュメントに保存すればいいの?
Pythonコードは、テキストファイルとして保存することができます。Pythonの拡張子は.pyです。例えば、hello_world.pyというファイル名で保存する場合は、テキストエディタなどで以下のようにコードを入力し、保存します。
print("Hello, world!")
ただし、Pythonファイルを実行するには、Pythonインタプリタが必要です。Pythonをインストールすることで、Pythonインタプリタが自動的にインストールされます。Pythonファイルを実行する場合は、コマンドラインまたはターミナルで以下のように入力します。
ファイル名.py
ここで、ファイル名.pyは実行したいPythonスクリプトのファイル名です。
ほうほう。でもPythonの開発環境ってなんだ?またC言語みたいに色々ややこしいのか?
win11にはPythonのコンパイラ?が搭載されてないの。ダウンロードする必要がある?
Pythonのコードを.pyファイルに保存したら、以下の手順で実行できます。
1.Pythonのインストール
まずは、Pythonをインストールする必要があります。Pythonの公式サイト(https://www.python.org/)からダウンロードして、インストールしてください。
2.コマンドプロンプト(ターミナル)を開く
次に、コマンドプロンプト(Windows)またはターミナル(Mac)を開きます。
3.Pythonのバージョンを確認
以下のコマンドを入力して、Pythonのバージョンが表示されることを確認します。
python --version
Pythonスクリプトを実行 以下のコマンドを入力して、Pythonスクリプトを実行します。
ファイル名.py
例えば、スクリプトのファイル名がconcatenate.pyの場合は、以下のように入力します。
python concatenate.py
以上の手順でPythonスクリプトを実行できます。
えーと。
に行って、
【Download】をクリックして
【Python3.11.2】をクリックしてダウンロード
ほいで、.exeをダブルクリックしてインストール。
コマンドプロンプトを開いてバージョン確認。python --versionを入力してEnterキーを押す。
できたみたい。
あれ?これだけでいいの?
なんだ簡単じゃん。PythonもJavaScriptも専門書がないとできないと思ってたよ。
あとは、コマンドプロンプトで実行すればいいのね
コードは何だっけ?
はい、こちらです
import os
# 処理するTXTファイルが格納されているディレクトリのパス
input_dir = "/path/to/txt/files"
# 結合後のTXTファイルの保存先
output_file = "/path/to/output.txt"
# 処理するTXTファイル名のリストを取得
file_list = os.listdir(input_dir)
# 結合後のテキストを格納するリストを用意
output_lines = []
# ファイルごとに処理を行う
for file_name in file_list:
# TXTファイル以外はスキップ
if not file_name.endswith(".txt"):
continue
# ファイルを開いて最初の19行を削除して、1行空白を入れる
with open(os.path.join(input_dir, file_name), "r", encoding="utf-8") as f:
lines = f.readlines()
lines = lines[19:]
lines.insert(0, "\n")
# 処理結果をリストに追加
output_lines.extend(lines)
# 結合後のテキストをファイルに書き込む
with open(output_file, "w", encoding="utf-8") as f:
f.writelines(output_lines)
えーと、メモ帳でいいって言ってたから、とりあえずメモ帳にコピペ
それで名前を付けて保存
拡張子.pyを認識するようすべてのファイルにして
.pyで保存。名前はなんでもいっか
これでコマンドプロンプトで実行だ~
can't open file
python: can't open file 'C:\\Users\\takam
\\kkk.py': [Errno 2] No such file or directoryってでたけど
このエラーメッセージは、指定したファイルkkk.pyが見つからなかったため、Pythonが実行できなかったことを示しています。
失敗ですね。まあ、知ってた。どのフォルダーのどのファイルに実行するか選択してなかったもの。でも、Pythonのコードは読めないし書けないし、ChatGPTに聞くしかないか。
とりあえず、処理したいファイルとPythonのコードのファイルを同じフォルダーにいれて。
デスクトップに保存するのは、迷子になるからですね。あと、コマンドプロンプトからこのフォルダーに移動するときに、ドラッグ&ドロップですむのもある
んで、この「ooo」ファイルの中に、Pythonコードのある「kkk.py」と処理したいフォルダー(この中に50項目以上のテキストファイルがはいっている)
処理したい.txtはずらーと50項目以上、これを繋げたいんだけど、最初の定型文を削除(19行)して繋げる。これだと、結合部分が分からないから、空白1行でね
んで。
まずは「ooo」フォルダの位置を示すために、「ooo」を開いて右クリックしてアドレスをコピーして控える。
処理したいファイルもパスをコピーして控える
「kkk.py」のパスも控える。
あと、処理したいファイルのフォルダー内にある。1つのパスも控える。
なんでこんなことするかって?
全部ChatGPTに聞くから
.txtファイルは50項目以上あって、定型文としてある、最初の19行を削除して、結合したときに行間あけたいから、一行空白をいれてほしい
C:\Users\takam\
OneDrive\デスクトップ\oooに"C:\Users\
takam\OneDrive\デスクトップ\ooo\
処理したいファイル"と
"C:\Users\takam\
OneDrive\デスクトップ\ooo\kkk.py"
があって、"C:\Users\takam\
OneDrive\デスクトップ\ooo\
処理したいファイル\xxxxxx_0001.txt"
がある
上の文は本当に送った文章、後半の部分はコピーしたパスをコピペしただけ
以下のPythonコードで、指定されたフォルダ内のすべての.txtファイルを読み込み、最初の19行を除いて、一つのファイルに結合し、行間に一行空白を入れた結果をoutput_file.txtというファイルに保存します。
(コードは省略、下にあります)
また、上記コードをC:\Users\takam\
OneDrive\デスクトップ\ooo\kkk.py
というファイル名で保存し、cmdなど
のコマンドプロンプトでpython kkk.py
と実行することで、指定されたフォルダ
内の.txtファイルを処理することができます。
それで修正されてでてきたコードが以下、
import os
# 処理対象のフォルダ
input_dir = r"C:\Users\takam\OneDrive\デスクトップ\ooo\処理したいファイル"
# 結合したファイルを保存するパスとファイル名
output_file = r"C:\Users\takam\OneDrive\デスクトップ\ooo\output_file.txt"
# ファイルの一覧を取得する
file_list = os.listdir(input_dir)
# 結合するファイルを開く
with open(output_file, "w", encoding="utf-8") as f:
# 各ファイルを順に処理する
for file_name in file_list:
# 拡張子が指定されたものであれば処理する
if file_name.endswith(".txt"):
# ファイルを開く
with open(os.path.join(input_dir, file_name), "r", encoding="utf-8") as txt_file:
# 全ての行を読み込む
lines = txt_file.readlines()
# 最初の19行を除いて、ファイルに書き込む
f.writelines(lines[19:])
# ファイル間の空行を書き込む
f.write("\n")
「kkk.py」を編集して、修正されたコードで上書き保存。
そして実行コマンドだ!
実行コマンドはなんだっけ
次のコマンドを実行してください。python C:\Users\takam
\OneDrive\デスクトップ\ooo\kkk.py このコマンドは、Pythonインタープリターに C:\Users\takam\
OneDrive\デスクトップ\ooo\kkk.py ファイルを開いて実行するように指示します。
ほい。
ん・・・・・・?
で、できてるーーー!!!!
(中身、精査中・・・・・・・・・・・・・)
はい、できてました。完璧です。
Python触ったこともない人が、Pythonを実行することができました。テキストつなげるだけなら、ほかの方法もあるんじゃないの?思われますが、こんな細かい指示を実行に移せるのはChatGPTだけでしょう。
そしてプログラミングで何か出来たという感動は初めてです(私はプログラミング打ってないんですが)もう
Hello world、for文、if文、while文・・・なにそれ?と言っていたころが懐かしい。
ぜひ、皆さんもChatGPTをつかっていろいろな作業を効率化しましょう。
ありがとう、ChatGPT~
どういたしまして。何かあればまた聞いてくださいね。