28

ディレクトリを作成してから、指定したディレクトリのファイルを開く/作成する/書き込むのに問題があります。その理由は私にはわかりません。私はos.mkdir()と

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
if not os.path.exists(path):
    os.mkdir(path)
temp_file=open(path+'/'+img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"

エラーが発生します

OSError:[Errno 2]そのようなファイルまたはディレクトリはありません:'いくつかのパス名'

パスの形式は「エスケープされていないスペースを含むフォルダー名」です。

私はここで何が間違っているのですか?


更新:ディレクトリを作成せずにコードを実行してみました

path=chap_name
print "Path : "+chap_path                       #For debugging purposes
temp_file=open(img_alt+'.jpg','w')
temp_file.write(buff)
temp_file.close()
print " ... Done"

それでもエラーが発生します。さらに混乱しました。


アップデート2:問題はimg_altのようです。場合によっては「/」が含まれているため、問題が発生しています。

したがって、「/」を処理する必要があります。'/'をエスケープする方法はありますか、それとも削除が唯一のオプションですか?

4

2 に答える 2

81
import os

path = chap_name

if not os.path.exists(path):
    os.makedirs(path)

filename = img_alt + '.jpg'
with open(os.path.join(path, filename), 'wb') as temp_file:
    temp_file.write(buff)

キーポイントはos.makedirs、の代わりに使用することですos.mkdir。これは再帰的です。つまり、すべての中間ディレクトリを生成します。http://docs.python.org/library/os.htmlを参照してください

バイナリ(jpeg)データを保存しているときに、ファイルをバイナリモードで開きます。

Edit 2に応答して、img_altに「/」が含まれる場合があります。

img_alt = os.path.basename(img_alt)
于 2012-07-28T11:33:08.357 に答える
2
    import os
    os.mkdir('directory name') #### this command for creating directory
    os.mknod('file name') #### this for creating files
    os.system('touch filename') ###this is another method for creating file by using unix commands in os modules 
于 2017-08-31T17:40:38.737 に答える