web-dev-qa-db-ja.com

Pythonでファイルとディレクトリを作成する

ディレクトリを作成してから、指定したディレクトリ内のファイルを開いたり、作成したり、ファイルに書き込んだりすることができません。その理由は私には不明のようです。私は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]そのようなファイルまたはディレクトリはありません: 'Some Path Name'

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

ここで何が間違っていますか?


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

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のようで、場合によっては '/'が含まれており、これが問題の原因となっています。

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

21
ffledgling
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)
61
Rob Cowie
    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 
0
Surya