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.makedirsos.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 回答