通过Python创建文件和目录

时间:2022-09-01 21:09:03

I'm having trouble creating a directory and then opening/creating/writing into a file in the specified directory. The reason seems unclear to me. I'm using os.mkdir() and

我在创建目录然后打开/创建/写入指定目录中的文件时遇到问题。原因似乎不清楚。我正在使用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"

I get the error

我收到了错误

OSError: [Errno 2] No such file or directory: 'Some Path Name'

Path is of the form 'Folder Name with un-escaped spaces'

路径的形式为'带有未转义空格的文件夹名称'

What am I doing wrong here?

我在这做错了什么?


Update: I tried running the code without creating the directory

更新:我尝试运行代码而不创建目录

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"

Still get an error. Confused further.

仍然会出错。进一步困惑。


Update 2:The Problem seems to be the img_alt, it contains a '/' in some cases, which makes is causing the trouble.

更新2:问题似乎是img_alt,它在某些情况下包含'/',这会导致麻烦。

So I need to handle the '/'. Is there anyway to escape the '/' or is deletion the only option?

所以我需要处理'/'。反正有没有逃脱'/'或删除唯一的选择?

2 个解决方案

#1


53  

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)

Key point is to use os.makedirs in place of os.mkdir. It is recursive, i.e. it generates all intermediate directories. See http://docs.python.org/library/os.html

关键是使用os.makedirs代替os.mkdir。它是递归的,即它生成所有中间目录。请参见http://docs.python.org/library/os.html

Open the file in binary mode as you are storing binary (jpeg) data.

在存储二进制(jpeg)数据时,以二进制模式打开文件。

In response to Edit 2, if img_alt sometimes has '/' in it:

在回复编辑2时,如果img_alt有时包含'/':

img_alt = os.path.basename(img_alt)

#2


0  

    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 

#1


53  

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)

Key point is to use os.makedirs in place of os.mkdir. It is recursive, i.e. it generates all intermediate directories. See http://docs.python.org/library/os.html

关键是使用os.makedirs代替os.mkdir。它是递归的,即它生成所有中间目录。请参见http://docs.python.org/library/os.html

Open the file in binary mode as you are storing binary (jpeg) data.

在存储二进制(jpeg)数据时,以二进制模式打开文件。

In response to Edit 2, if img_alt sometimes has '/' in it:

在回复编辑2时,如果img_alt有时包含'/':

img_alt = os.path.basename(img_alt)

#2


0  

    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