38

Python を使用してテキスト ファイルを作成して書き込もうとしています。検索しましたが、このエラーの解決策/理由が見つかりません。

動作しないコードは次のとおりです。

afile = 'D:\\temp\\test.txt'
outFile = open(afile, 'w' )
outFile.write('Test.')
outFile.close()

# Error: 2
# Traceback (most recent call last):
#   File "<maya console>", line 1, in <module>
# IOError: [Errno 2] No such file or directory: 'D:\\temp\\test.txt' #

私が見つけたほとんどの回答は、パスのスラッシュに関連しているので...

I tried 'D:/temp/test.txt' and got an error.
I tried r'D:\temp\test.txt' and got an error.

D:/ のルートにファイルを作成しようとすると、成功しました。

'D:/test.txt' works.
'D:\\test.txt' works.
r'D:\test.txt' works.

ファイルを作成しようとしているときに、希望するディレクトリ パスを作成できないようです。Windows(7) で Python を使用して特定のパスにファイルを作成する正しい方法は何ですか? open() ができることを誤解していますか? ディレクトリが存在しない場合はディレクトリを作成しますか? ファイルを作成するために「書き込み」モードで open() を使用する前に、ディレクトリ パスを明示的に作成する必要がありますか?

4

3 に答える 3

61

が成功するには、ファイルの親ディレクトリが存在する必要があると推測するのは正しいですopen。これに対処する簡単な方法は、 を呼び出すことos.makedirsです。

ドキュメントから:

os.makedirs(パス[, モード])

再帰的なディレクトリ作成機能。と同様mkdir()ですが、リーフ ディレクトリを含めるために必要なすべての中間レベル ディレクトリを作成します。

したがって、コードは次のように実行される可能性があります。

filename = ...
dirname = os.path.dirname(filename)
if not os.path.exists(dirname):
    os.makedirs(dirname)
with open(filename, 'w'):
    ...
于 2013-09-12T08:03:40.283 に答える
2

存在しないディレクトリにファイルを作成しようとすると、そのエラーが発生します。

最初にディレクトリが存在することを確認する必要があります。この答えos.makedirs()に従ってそれを行うことができます。

于 2013-09-12T08:02:48.610 に答える