如何为Python os.path模块设置不同的文件系统?
我正在开发一个脚本,目的是将我的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
提供了 Path
、PurePosixPath
和 PureWindowsPath
。第一个是根据当前平台提供的功能。后两个功能比较有限,但可以用来构建合适的文件名。