おそらく非常に初心者の質問..
しかし、私が試してみると:
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
エラーが発生する
IOError: [Errno 2] No such file or directory: '/home/path/filename'
「w」と言ったので、まだそこにない場合は新しいファイルを書き込むのではないですか?
おそらく非常に初心者の質問..
しかし、私が試してみると:
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
エラーが発生する
IOError: [Errno 2] No such file or directory: '/home/path/filename'
「w」と言ったので、まだそこにない場合は新しいファイルを書き込むのではないですか?
エラー メッセージは次のように再現できます。
import os
filename = '/home/path/filename'
f = open(os.path.join(os.path.dirname(__file__), filename),"w")
f.close()
# IOError: [Errno 2] No such file or directory: '/home/path/filename'
ここでの問題filename
は、絶対パスであるため
os.path.join
、最初の引数を無視して次を返すことfilename
です。
In [20]: filename = '/home/path/filename'
In [21]: os.path.join(os.path.dirname(__file__), filename)
Out[21]: '/home/path/filename'
したがって、存在しないファイルを指定しているだけでなく、存在しないディレクトリを指定しています。open
ディレクトリの作成を拒否します。
文字通り書き込もうとしていますhome/path/filename
か?その場合、それ/home/path
は存在しないと不平を言っています。名前付きのディレクトリを作成する/home/path
か、既存のディレクトリ内にファイル名を選択してみてください(たとえば、実際のホームディレクトリへのパスを確認します)。相対パスを使用することもできます。
絶対パスと相対パスの違いについては、
http://en.wikipedia.org/wiki/Path_%28computing%29を参照してください。