Frog in a White Coat.

白衣のカエル

プログラミング初心者がChatGPTを使ってPythonスクリプトを実行できた話

(アプリ作ったとかではないので期待しないでください)

どうもカエルです。

私は今までいろいろプログラミング言語に触ってきましたが、どれも中途半端ばかり、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スクリプトを実行できます。

えーと。

https://www.python.org/

に行って、

【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~

どういたしまして。何かあればまた聞いてくださいね。