質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

334閲覧

python ファイルの書き込み、読み込み時のことで。。。

gontaros0302

総合スコア14

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2018/06/06 10:03

参考書を見ながら学んでいるのですが、ファイル操作のところで詰まってしまいました。
下のコードは参考書をほぼほぼ写したものなのですが、、

python

1os.path.join("Users","Name","st.txt") 2 3my_list = [] 4 5 6with open("st.txt", "w") as f:#as fとするのは拡張子がtxtだから? 7 f.write("Hi from Python") 8 9with open("st.txt", "r") as f: 10 my_list.append(f.read()) 11 12print(my_list) 13 14 15

僕の解釈では、

os.path.join関数でパスを組み立て、st.txtのファイルを作成

st.txtに"Hi from Python"と書き込み、それを変数fに入れて扱いやすいようにする

readメソッドはファイルを開いた後1回しか使えないからlistに入れておく

という感じなのですが、何がどのように動いているのかが今一つイメージできていません。
またタイトルにも書きましたが、as fとして変数fにファイルオブジェクトをなぜ割り当てたのか(初歩的な質問かもしれませんが)もご教示いただければと思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

実はこんな感じで書けます。

python

1f = open("st.txt", "w") 2f.write("Hi from Python") 3f.close()

withはブロックを抜けるとき、勝手にcloseしてくれる糖衣構文という認識で問題ありません。

もう少し詳しく知りたいです! ということであれば、検索したら上の方にこんな記事が出てきました。

with構文とは何なのか - 年中アイス

でも、これを理解するのは中級者以上でないとなかなかしんどいと思うので、わからなくても良いです。いずれ振り返ったときに「ああ、そういうことだったんだ」ってなれば良いような話題です、これは。

投稿2018/06/06 17:32

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gontaros0302

2018/06/07 08:34

ありがとうございます???? リンクまで、本当助かります!
guest

0

処理のフローとしては

python

1#ファイルのパスを生成 2#(文字列を生成しているだけなのでファイルは作っていないのでは?) 3os.path.join("Users","Name","st.txt") 4 5my_list = [] 6 7#ファイルを操作するオブジェクトに「f」という名前を付けてst.txtファイルを開く 8with open("st.txt", "w") as f: 9 #ファイルに書き込む 10 f.write("Hi from Python") 11#ファイルを閉じる(withステートメント通過で自動で閉じられる) 12 13#ファイルを操作するオブジェクトに「f」という名前を付けてst.txtファイルを開く 14with open("st.txt", "r") as f: 15 #ファイルを読み込んだ結果を変数に格納 16 my_list.append(f.read()) 17#ファイルを閉じる 18 19 20print(my_list) 21

with構文についてはこちら
Pythonでwith構文を使う方法【初心者向け

fとした理由は単にfileの頭文字だからだと思います。

また、2つのfは、同じfという名前でも別のものとして処理されます。
なので

python

1with open("st.txt", "w") as writer: 2 writer.write("Hi from Python") 3 4with open("st.txt", "r") as reader: 5 my_list.append(reader.read()) 6

としても動作すると思います。

投稿2018/06/06 10:33

編集2018/06/06 10:36
ponpu1601

総合スコア166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gontaros0302

2018/06/07 08:35

なるほど、その都度箱に入れて渡し、箱から中身を出すということですね。ありがとうございます????
guest

0

with open("st.txt", "w") as f: # ↑st.txtを「w:書込みモード」で開く。 # ↑開いた後、書込みをする必要があるので、 # ↑対象を「f」という変数に保持する。 # ↑「st.txtに書きこむ」という処理は「fに書き込む」ことになる。 f.write("Hi from Python") # ↑文字列を「fに書き込む」。 with open("st.txt", "r") as f: # ↑st.txtを「r:読込みモード」で開く。 # ↑開いた後、ファイルの内容を読む必要があるので、 # ↑対象を「f」という変数に保持する。 # ↑「st.txtの内容を読む」という処理は「fを読む」ことになる。 my_list.append(f.read()) # ↑「fを読んだ結果」は「f.read()」で得られる文字列。 # ↑その文字列をlistに追加している。

投稿2018/06/06 10:30

tkturbo

総合スコア5572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gontaros0302

2018/06/07 08:36

ご丁寧にありがとうございます????
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問