Python 在Django项目的Ubuntu下创建文件夹并更改文件夹名

Python 在Django项目的Ubuntu下创建文件夹并更改文件夹名,python,django,ubuntu,deployment,path,Python,Django,Ubuntu,Deployment,Path,我的项目中有以下代码: name = "some-name" myDir = os.path.join(BASE_DIR, r'first_scrapy\spiders\tmp\{}'.format(name)) 我在Windows上开发,这很有效-它创建了一个文件夹,其中包含我设置的名称。但是当我在ubuntu16.04上部署此代码时,此代码会创建名为first\u scrapy\spiders\tmp\parfums promo的文件夹,该文件夹的路径将成为文件夹名。 如何避免这种情况?这

我的项目中有以下代码:

name = "some-name"
myDir = os.path.join(BASE_DIR, r'first_scrapy\spiders\tmp\{}'.format(name))
我在Windows上开发,这很有效-它创建了一个文件夹,其中包含我设置的
名称
。但是当我在
ubuntu16.04
上部署此代码时,此代码会创建名为
first\u scrapy\spiders\tmp\parfums promo
的文件夹,该文件夹的路径将成为文件夹名。

如何避免这种情况?

这是一个很好的例子,说明了何时对系统路径使用
os.path.join()
——在Windows中,
\
分隔目录。Ubuntu使用
/

os.path.join()
选择正确的路径,这样您就不必这样做。

基于Unix的路径 在基于Unix的系统中,路径中的目录通常用正斜杠(
/
)分隔。因此,我们可以简单地将其改写为:

# Unix-based operating systems
name = "some-name"
myDir = os.path.join(BASE_DIR, 'first_scrapy/spiders/tmp/{}'.format(name))

提供跨不同操作系统的功能实际上是
os
模块要处理的主要任务之一。

Linux中的路径有正斜杠,所以
first\u scrapy/spider/tmp/{}
。我如何使这在Windows和Linux中都起作用?请参阅我关于
os.path.join()的回答
看起来应该可以,但当我的项目想要创建该文件夹时,我会遇到下一个错误:
权限错误:[Errno 13]权限被拒绝:“…/first\u scrapy/spider/tmp/parfums promo”
我的项目没有创建文件夹的权限吗?或者我怎么能理解呢?我如何修复它?@Chiefir:这可能意味着该目录不存在,或者运行该文件的用户无权访问该目录。@Chiefir:请参阅,但我不是手动创建此文件夹,而是使用我的项目代码。如果这个目录不存在,我的项目不应该自己创建它吗?@Chiefir:不,你需要一个
os.path.mkdirs
# works on "all" operating systems (well, those suported by the os module)
name = "some-name"
myDir = os.path.join(BASE_DIR, 'first_scrapy', 'spiders', 'tmp', name)