我的项目中有这个代码:
name = "some-name"
myDir = os.path.join(BASE_DIR, r'first_scrapy\spiders\tmp\{}'.format(name))
我在Windows上开发,这很有效 - 它创建了一个文件夹,其中包含name
我设置的内容。但是当我在Ubuntu 16.04
上部署此代码时 - 此代码会创建名称为first_scrapy\spiders\tmp\parfums-promo
的文件夹 - 该文件夹的路径将成为文件夹名称。
我该如何避免?
答案 0 :(得分:2)
这是何时使用os.path.join()
用于系统路径的一个很好的示例 - 在Windows中,\
分隔目录。 Ubuntu使用/
。
os.path.join()
选择正确的,因此您不必这样做。
答案 1 :(得分:1)
在基于Unix的系统中,路径中的目录通常用正斜杠(/
) 分隔。所以我们可以简单地将其重写为:
# Unix-based operating systems
name = "some-name"
myDir = os.path.join(BASE_DIR, 'first_scrapy/spiders/tmp/{}'.format(name))
如果您希望编写适用于不同操作系统的应用程序,则可以使用os.path.join
。例如:
# 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)
提供不同操作系统的功能实际上是os
模块旨在处理的主要任务之一。