Python(書き込み)

読み込みが出来たので書き込みも簡単かと思います。きっと何も調べなくても大丈夫でしょう。読み込みではreadメソッドだったので、おそらくwriteですね。
スクリプト作ってみます。

takk@deb9:~$ cat w.py
f=open("out.txt","w")
f.write("AAAA")
f.close()
takk@deb9:~$

Rubyの書き込みの時の失敗を教訓に”w”も指定してみました。

takk@deb9:~$ python3 w.py
takk@deb9:~$ ls
out.txt  w.py
takk@deb9:~$ 

一発で実行できました。
out.txtが生成されていました。中身を確認しましょう。

takk@deb9:~$ cat out.txt
AAAAtakk@deb9:~$

ちゃんと書かれてます。改行してないので、プロンプトと同じ行に表示されて、見難いですが。

“w”がないとRubyのように失敗するのでしょうか。やってみます。

takk@deb9:~$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170118] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> f=open("out2.txt")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'out2.txt'
>>>

やはり失敗。指定した名前のファイルを探してしまうのですね。

次は、writeメソッドに注目してみます。リファレンスマニュアルを見れば書いてあるのでしょうけど、マニュアルを見ずに感を養いたいです。

>>> f=open("out2.txt","w")
>>> type(f.write("AAA"))
<class 'int'>
>>> 

なんとintが戻り値になっています。printしてみます。

>>> print(f.write("AAA"))
3
>>>

3が表示されました。AAAという文字列を引数に渡しましたが、もしや文字数でしょうか。
文字列を変えてやってみましょう。

>>> print(f.write("ABCDEFG"))
7
>>>

やはり文字数と一致してます。
観念してPythonリファレンスを見ると、このように書かれていたので、書き込み成功した文字数が返るのでしょう。

write(s)

    Write the string s to the stream and return the number of characters written.

コメント

タイトルとURLをコピーしました