如何为Python os.path模块设置不同的文件系统?

0 投票
1 回答
23 浏览
提问于 2025-04-14 17:17

我正在开发一个脚本,目的是将我的Django项目从Windows电脑自动部署到本地的Raspberry服务器上。

在这个过程中,有一个Python脚本需要复制到服务器上,并在那里执行。我是通过paramiko模块的SSH调用来执行它的:

client.exec_command('python ' + '/home/myname/projects/example_app/script.py')

这是被执行脚本中的一行:

import os
import subprocess

sp.run("python " + os.path.join("/home/myname/projects", "example_app", "manage.py collectstatic"))

但是,我遇到了以下错误:

python: can't open file 'E:\\home\\myname\\projects\\example_app\\manage.py': [Errno 2] No such file or directory

奇怪的是,似乎os.path模块在处理路径时还是按照我的Windows文件系统来拼接路径,尽管这个脚本是在Linux服务器上运行的。好吧,我对SSH的实现不是很了解,这我可以接受。我的问题是:有没有办法手动设置os.path模块的操作系统

1 个回答

1
from pathlib import Path, PurePosixPath, PureWindowsPath
def test():
    file = PurePosixPath('/home/myname/projects') / "example_app" / "manage.py"
    sp.run(f'python {file} collectstatic')

注意,collectstatic 不是文件名的一部分,而是传给 Python 的一个参数。所以它不应该出现在路径中。

模块 pathlib 提供了 PathPurePosixPathPureWindowsPath。第一个是根据当前平台提供的功能。后两个功能比较有限,但可以用来构建合适的文件名。

撰写回答