今回は、Pythonのファイル操作と遂に実践へと進んでいきます。
前回は【プログラミング】Python制御構文と関数をChatGPTで再確認をやったので、参考にしてみてください!!
このブログは、以前Pythonを学んでいたのですが、途中で挫折してしまった経験がある私が、今回はChatGPTを活用して、より効果的に学習を進める方法を試してみます。
プログラミング初心者である私が、どのようにしてPythonを習得していくのか、そのステップや学びのポイントを具体的にお伝えしていきます。私と一緒にPythonを学んでみませんか?日々の学習の中で感じたことや役立った情報をお届けします。
Pythonの始め方についてはこちらの記事を参考にしてみてください!!
参考記事
今回はファイル操作からやっていきます。
ブログ内のコードはコピーして使用できます
ステップ5: ファイル操作
【プログラミング】Python制御構文と関数をChatGPTで再確認が無事に終わりました。
1. ファイルの読み書き
Pythonでは、open()
関数を使ってファイルを開き、読み書きを行います。
ファイルの書き込み
1 2 3 4 |
# ファイルを開く(書き込みモード) with open('example.txt', 'w') as ファイル: ファイル.write("こんにちは、世界!\n") ファイル.write("これはPythonで書き込んだテキストです。\n") |
with
構文: ファイルを開いて作業が終わったら、自動的に閉じるための方法です。リソース管理が簡単になります。- モード:
'w'
: 書き込み(既存の内容を消去)'a'
: 追記(既存の内容を保持)
ファイルの読み込み
1 2 3 4 |
# ファイルを開く(読み込みモード) with open('example.txt', 'r') as ファイル: 内容 = ファイル.read() print(内容) |
'r'
モード: 読み込み専用モードです。
ファイルの操作例
1 2 3 4 5 6 7 8 9 10 11 |
# 1. ファイルに書き込む with open('fruits.txt', 'w') as ファイル: 果物リスト = ["りんご", "バナナ", "オレンジ", "ぶどう"] for 果物 in 果物リスト: ファイル.write(果物 + "\n") # 2. ファイルを読み込む with open('fruits.txt', 'r') as ファイル: 行リスト = ファイル.readlines() for 行 in 行リスト: print(行.strip()) # 行末の改行を取り除く |
という内容です。
急に難しくなった感がありますが、頑張ってやっていきます。
練習問題
練習問題
students.txt
というファイルを作成し、学生の名前を1行ずつ書き込んでみましょう。その後、そのファイルを読み込んで内容を出力するプログラムを書いてみましょう。numbers.txt
というファイルを作成し、1から10までの数字を1行ずつ書き込んでみましょう。その後、そのファイルを読み込んで、各数字の2倍を計算して出力するプログラムを書いてみましょう。
練習問題1
students.txt
というファイルを作成し、学生の名前を1行ずつ書き込んでみましょう。その後、そのファイルを読み込んで内容を出力するプログラムを書いてみましょう。
とりあえず、ファイルの作成をしてテキストを入力していきます.
ファイル名はstudents.txtで作っていきます。
1 2 3 4 5 6 7 8 9 10 11 |
#students.txt 1.dada 2.tanaka 3.sasaki 4.tadano 5.satou 6.misima 7.kannno 8.isihara 9.ootani |
ファイルの内容を読み込んでみます
1 2 3 |
with open('students.txt', 'r') as file: content = file.read() print(content) |
出力
1 2 3 4 5 6 7 8 9 |
1.dada 2.tanaka 3.sasaki 4.tadano 5.satou 6.misima 7.kannno 8.isihara 9.ootani |
問題なく、ファイルの内容が出力されました。
プログラムを実行している場所がファイルのあるディレクトリであることを確認してください。コマンドプロンプトやターミナルで実行する場合、cd
コマンドで正しいディレクトリに移動してから実行してください。
練習問題2
numbers.txt
というファイルを作成し、1から10までの数字を1行ずつ書き込んでみましょう。その後、そのファイルを読み込んで、各数字の2倍を計算して出力するプログラムを書いてみましょう。
1 2 3 |
with open('numbers.txt', 'w') as file: file.write("1\n") file.write("2\n") |
こんな感じで書いていたのですが、めんどくさい!!
もっと簡単な方法はあるはず。。。
しかし、私にはわからなかったのでChatGPTさんに聞いてみました!!
練習問題2がわかりません!!
教えて下さい。
この問題をステップバイステップで解説します。まず、numbers.txt
ファイルに1から10までの数字を書き込み、その後そのファイルを読み込んで、各数字の2倍を計算して出力するプログラムを作成します。
ステップ1: ファイルに1から10までの数字を書き込む
1 2 3 4 |
# ファイルを開いて書き込む with open('numbers.txt', 'w') as ファイル: for 数字 in range(1, 11): # 1から10までの数字をループ ファイル.write(str(数字) + '\n') # 数字を文字列に変換して書き込む |
解説:
open('numbers.txt', 'w')
: 書き込みモードでnumbers.txt
ファイルを開きます。ファイルが存在しない場合は新しく作成されます。for 数字 in range(1, 11)
: 1から10までの数字を順番に取得します。ファイル.write(str(数字) + '\n')
: 数字を文字列に変換してファイルに書き込み、各数字の後に改行を入れます。
ステップ2: ファイルを読み込んで各数字の2倍を計算して出力
1 2 3 4 5 6 7 8 |
# ファイルを開いて読み込む with open('numbers.txt', 'r') as ファイル: 行リスト = ファイル.readlines() # 全ての行をリストとして読み込む for 行 in 行リスト: 数字 = int(行.strip()) # 行の内容を整数に変換 倍数 = 数字 * 2 # 2倍に計算 print(f"{数字}の2倍は{倍数}です") |
解説:
open('numbers.txt', 'r')
: 読み込みモードでnumbers.txt
ファイルを開きます。ファイル.readlines()
: ファイルの全ての行をリストとして読み込みます。int(行.strip())
: 行の改行を取り除き、文字列を整数に変換します。- 各数字の2倍を計算し、出力します。
このコードを実行すると、numbers.txt
に1から10までの数字が書き込まれ、その数字を読み込んでそれぞれの2倍を出力します。
とこのように、詳しく丁寧に教えてくれました!!
わからないときには、自分がわからないポイントをChatGPTに伝えることで、丁寧に教えてくれました。
修正した物を実際に実行をしてみると無事にできました。
中には、わからないことも多くありますが、わからない部分もChatGPTに聞くことで解決をしていけました。
設定の仕方がわからない方はこちらに記事を参考にしてみてください
関連記事
ステップ6: ファイル操作の応用と例外処理
無事に練習問題が終わりました。
素晴らしいですね!次はファイル操作の応用編として、もう少し高度なファイル操作や例外処理について学びましょう。
ステップ6: ファイル操作の応用と例外処理
1. ファイルの追記
既存のファイルに新しいデータを追加する方法です。
ファイルの追記例
1 2 3 4 |
# ファイルを開いて追記 with open('numbers.txt', 'a') as ファイル: for 数字 in range(11, 21): # 11から20までの数字を追加 ファイル.write(str(数字) + '\n') |
'a'
モードを使用して、ファイルの末尾にデータを追加します。
2. ファイルの例外処理
ファイル操作中にエラーが発生した場合に適切に対処するための方法です。
例外処理の例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
try: # ファイルを開いて読み込む with open('numbers.txt', 'r') as ファイル: 行リスト = ファイル.readlines() for 行 in 行リスト: 数字 = int(行.strip()) 倍数 = 数字 * 2 print(f"{数字}の2倍は{倍数}です") except FileNotFoundError: print("ファイルが見つかりません。正しいファイル名を指定してください。") except ValueError: print("ファイルに無効なデータが含まれています。数値のみを含むファイルを使用してください。") except Exception as e: print(f"予期しないエラーが発生しました: {e}") |
try
ブロック: 通常の処理を記述します。except
ブロック: 特定のエラーが発生したときに実行されるコードを記述します。
3. CSVファイルの操作
CSVファイル(Comma Separated Values)は、データをカンマ区切りで保存する一般的なフォーマットです。
CSVファイルの読み込みと書き込み
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import csv # CSVファイルにデータを書き込む with open('data.csv', 'w', newline='') as ファイル: writer = csv.writer(ファイル) writer.writerow(['名前', '年齢', '性別']) writer.writerow(['太郎', 20, '男']) writer.writerow(['花子', 22, '女']) # CSVファイルを読み込む with open('data.csv', 'r') as ファイル: reader = csv.reader(ファイル) for 行 in reader: print(行) |
csv.writer
: CSVファイルに書き込むためのオブジェクトを作成します。csv.reader
: CSVファイルを読み込むためのオブジェクトを作成します。
練習問題
練習問題
numbers.txt
ファイルに11から20までの数字を追記し、その後ファイルを読み込んで各数字の2倍を出力するプログラムを書いてみましょう。- 存在しないファイルを読み込もうとするプログラムを書き、その際に適切なエラーメッセージを表示するように例外処理を追加してみましょう。
data.csv
というCSVファイルを作成し、名前、年齢、性別のデータを3行書き込むプログラムを書いてみましょう。その後、そのCSVファイルを読み込んで内容を出力するプログラムを書いてみましょう。
練習問題1
numbers.txt
ファイルに11から20までの数字を追記し、その後ファイルを読み込んで各数字の2倍を出力するプログラムを書いてみましょう。
1 2 3 4 |
# ファイルを開いて追記 with open('numbers.txt', 'a') as ファイル: for 数字 in range(11, 21): # 11から20までの数字を追加 ファイル.write(str(数字) + '\n') |
解説にあったコードをそのままコピペして使ってみました!!
問題なく、出力ができました!!
練習問題2
存在しないファイルを読み込もうとするプログラムを書き、その際に適切なエラーメッセージを表示するように例外処理を追加してみましょう。
先程の続きから、プログラムを追加していきます!!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
try: # ファイルを開いて読み込む with open('numbers.txt', 'r') as ファイル: 行リスト = ファイル.readlines() for 行 in 行リスト: 数字 = int(行.strip()) 倍数 = 数字 * 2 print(f"{数字}の2倍は{倍数}です") except FileNotFoundError: print("ファイルが見つかりません。正しいファイル名を指定してください。") except ValueError: print("ファイルに無効なデータが含まれています。数値のみを含むファイルを使用してください。") except Exception as e: print(f"予期しないエラーが発生しました: {e}") |
実際に、ファイル名を変えて出力咲いてみました!!
num.txtに変更してプログラムを実行すると
1 |
ファイルが見つかりません。正しいファイル名を指定してください。 |
と出力されました。これができるとエラー文が出たときに対応が簡単になりますね。
練習問題3
data.csv
というCSVファイルを作成し、名前、年齢、性別のデータを3行書き込むプログラムを書いてみましょう。その後、そのCSVファイルを読み込んで内容を出力するプログラムを書いてみましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import csv # CSVファイルにデータを書き込む with open('data.csv', 'w', newline='') as ファイル: writer = csv.writer(ファイル) writer.writerow(['名前', '年齢', '性別']) writer.writerow(['太郎', 20, '男']) writer.writerow(['花子', 22, '女']) # CSVファイルを読み込む with open('data.csv', 'r') as ファイル: reader = csv.reader(ファイル) for 行 in reader: print(行) |
これも、ChatGPTの解説の中にあった物をそのまま使いました。
しかし、ここで一つ問題が発生、CSVファイルを作ってその中にデータを書き込んで見たのですが正常に出力はされるけど、ファイルを見ると文字化けしているんです。
CSVファイルを読み込むときに、種類が違うと文字化けが起こるようです。
解決方法
UTF-8の部分をいじると治ります。
文字化けの修正については、こちらの記事がわかりやすかったですよ!!
【VSCode】文字化けを解消する方法この方法を見て修正をしました。
まとめ
無事、これでファイル操作の内容は一通り終わりました。
この記事を見た方の中には、ただコードをコピーして楽に済ませているのでは?と思っておられる方もいるかも知れませんが、私としては、プログラムのコードがこんな感じで動いていて、どのように出力されるかを見るだけでも勉強になっておます。
実際に、このブログ内のコードをコピーして使用して、プログラムのコードがどのように動いているの確認してみるのも楽しいですよ!!
今まで、書籍などで勉強もしてきましたが、本に書いてあるコードをキーボードで1から打ち込む作業だけでもかなりの時間がかかっていました。その部分が短縮されるだけでも学習時間の短縮はかなりできるものだと思っています。
あなたも一緒にプログラミングを学んでみませんか?
Pythonを学びたい方はこちらの記事を参考にしてみてください
関連記事
プログラミング学習を進めているけれど、まだ副収入につなげられていない…そんなあなたへ!今こそ、学んだスキルを活かして副業に挑戦する絶好のチャンスです。プログラミングだけでなく、自分のスキルや商品をネットで販売する『ネットショップ』を開設してみませんか?
ネットショップを持つことで、自分の知識やスキルをより多くの人に届け、副収入を得ることが可能です。学んできたプログラミングを活かして、ショップのカスタマイズや運営も自由自在に行えますし、もし商品作成が難しい場合でも、デジタル商品やサービス提供など、いろんな選択肢があります。
このステップで一歩踏み出せば、今学んでいることが副収入に直結し、自分の時間をより有効に使うことができるはずです!一緒にネットショップを開設し、副業の第一歩を踏み出しましょう!
タイトルテキスト
プログラミングを学びたいけど、どこから始めたらいいのか分からない、自分に合っているか不安…そんな悩みを持っている方におすすめしたいのが、 無料相談 サービスです!
この無料相談では、あなたの現状や目標に合わせて、最適な学習プランを一緒に考えてくれます。どんなスキルが必要なのか、どうやって学習を進めると効果的かを具体的にアドバイスしてもらえるので、無駄なく効率的にスタートを切ることができます。
さらに、プログラミング学習には同じ目標を持つ 仲間 がいること、そして頼りになる メンター の存在がとても大きな支えになります。独学ではどうしてもつまずきやすい部分も、メンターがあなたの成長に合わせて親身にサポートしてくれるので、安心して学びを進められます。
まずは 無料相談 で、あなたに合ったプランを見つけて、スキルアップへの第一歩を踏み出してみませんか?今なら、迷っている方でも気軽に相談できるチャンスです!
次回の記事はこちらから
関連記事