在windows中开发和在linux python api中测试时如何管理目录路径

在windows中开发和在linux python api中测试时如何管理目录路径,python,Python,我正在开发PythonWeb应用程序,它很少涉及PythonFlaskAPI。我在windows上开发这个,并使用postman测试了所有api。一切正常。在我的webapp项目中,如果目录不存在,我必须创建几个目录,因此我使用以下代码: if not os.path.isdir("dataset/" + client_name): # if client name directory is not created, then create it client_dir = cur

我正在开发PythonWeb应用程序,它很少涉及PythonFlaskAPI。我在windows上开发这个,并使用postman测试了所有api。一切正常。在我的webapp项目中,如果目录不存在,我必须创建几个目录,因此我使用以下代码:

if not os.path.isdir("dataset/" + client_name):
    # if client name directory is not created, then create it
    client_dir = curr_path + '\\' + 'dataset\\' + client_name 
    os.mkdir(client_dir)
我正在上部署此Web应用。这将使用linux作为it平台,我将使用windows进行开发,因为会出现一些问题。现在在windows中,我们对目录使用
\
,但在linux中,它使用
/

在windows上工作和在linux上部署时,如何管理这一点。有什么配置我可以定义吗


谢谢

您可以避免在代码中同时使用斜杠。使用
os.path.join构建路径。在您发布的示例中,您需要做的只是更改

client_dir = curr_path + '\\' + 'dataset\\' + client_name

编辑:您还应该更改

if not os.path.isdir("dataset/" + client_name):

并且,无论代码运行在哪个系统上,都将适当地构造路径。

您可以从中使用路径

该模块提供了表示文件系统路径的类,这些类具有适合不同操作系统的语义


使用
pathlib
中的
Path
Path
是Windows上的
WindowsPath
和Linux/Unix上的
PosixPath
的别名。这意味着当您使用斜杠运算符(
/
)时,它会根据平台进行正确解释:

from pathlib import Path

curr_path = Path.cwd() # or something else
client_dir = curr_path / 'dataset' / client_name

if not client_dir.is_dir():
    client_dir.mkdir()

避免在代码中同时使用斜杠。使用
os.path.join(…)
创建路径将为给定系统适当设置路径格式:@SyntaxVoid您能举个例子吗?@SyntaxVoid有一个正确的方法。还有
os.path.sep
。如果从
pathlib导入路径执行,则
client\u dir=Path.cwd()/'dataset'/client\u name
pathlib
使用
/
作为联接运算符,但它会根据您所在的平台对其进行正确解释。然后是
client\u dir.mkdir()
。跟刚才说的差不多。从代码中删除“/”和“\”。甚至“os.path.sep”通常也是不必要的:os.path.join和pathlib做得更好。对于诸如“/”和“C:”之类的顶级注意事项,要小心。“_file_uu”变量(如果在主电源中可用)可能会有所帮助。记住你可以用“…”爬上去。最后:**os.makedirs()**os.path.join是白天使用Windows和晚上使用Linux的救命稻草。我还鼓励使用
os.path.sep
os.path.join
实现
os.sep
,你能提供一个这样解决问题的例子吗?否则,它应该是一个评论instead@SyntaxVoid当然可以
if not os.path.isdir(os.path.join("dataset", client_name))
from pathlib import Path

path = Path('dataset')/client_name

if not path.isdir():
    client_dir = Path(curr_path)/'dataset'/client_name
    client_dir.mkdir()
from pathlib import Path

curr_path = Path.cwd() # or something else
client_dir = curr_path / 'dataset' / client_name

if not client_dir.is_dir():
    client_dir.mkdir()