Help us understand the problem. What is going on with this article?

Pythonでファイルopenにちょっとつまずいた話

More than 1 year has passed since last update.

はじめに

この記事はPythonでopen()関数でパス指定のトラブルシューティングの記録です。
同じようなトラブルを抱えている方への参考になれば幸いです。

結論

・raw文字列を使おう。
・フルパス、相対パスを意識しよう。

結論にいたるまで

pythonを学び始めて計算結果をテキストファイルに保存してみようってなったので
ひとまず参考書のコードをPyCharmにポチポチして実行してみる。

hoge1.py
f = open("C:\py_study\text.txt", "r", encoding="utf-8")
s = f.read()
print(s)
f.close()

#result
#OSError: [Errno 22] Invalid argument: 'C:\\py_study\text.txt'

まぁ、何かしらエラーは出ると思ってました。
そこでエラーを確認すると「\text.txt」の「\t」がタブ文字になってることに気づく。。。
解決策としてwindowsのパス指定のときraw文字列が便利って学んだことを思い出して
パス指定にraw文字列を使ってみる。

hoge2.py
f = open(r"C:\py_study\text.txt", "r", encoding="utf-8")
s = f.read()
print(s)
f.close()

#result
#aaaa
#bbbb
#cccc
#abcd

できた。

カレントディレクリにファイルを作成していればraw文字でフルパスを指定しなくてもOK
ちなみにカレントディレクトリは

import os
print(os.getcwd())

で確認できます。

カレントディレクトリが「C:\py_study」だったので

hoge3.py
f = open("text.txt", "r", encoding="utf-8")
s = f.read()
print(s)
f.close()

でもファイルの中身が確認できました。

おわり。

trkrcafeaulate
アラサー/理学修士/応用情報技術者/ インフラ出身のweb開発エンジニア。 最近はpythonを軸にAI,データマイニングを勉強中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away