如何将远程文件作为命令行参数传入Python程序且无需提前下载?
完全可以实现,根据你的使用场景可以选择以下几种方案:
- 方案1:SSHFS挂载远程目录(零代码修改,最推荐)
这个方案可以把远程服务器的目录直接映射为本地的一个普通目录,你的score.py不需要做任何修改,系统会自动在你程序读取文件时按需传输数据,不会提前下载整个文件夹。
操作步骤:- 本地安装SSHFS工具:
- Debian/Ubuntu系统执行:
sudo apt update && sudo apt install sshfs - macOS系统执行:
brew install macfuse sshfs
- Debian/Ubuntu系统执行:
- 创建本地挂载目录:
mkdir ~/remote_mount - 挂载远程目录:
sshfs 你的远程用户名@远程服务器IP:/远程服务器上的目标文件夹路径 ~/remote_mount - 直接执行原有命令即可:
python score.py --folder_name ~/remote_mount
用完后可以执行fusermount -u ~/remote_mount卸载挂载点。
- 本地安装SSHFS工具:
- 方案2:直接在远程服务器运行程序(效率最高,适合大文件处理)
如果你的score.py依赖不复杂,直接把代码传到远程服务器运行,完全不需要传输原始文件,性能最好。
操作步骤:- 把本地代码传到远程服务器:
scp score.py 你的远程用户名@远程服务器IP:~/ - SSH登录到远程服务器:
ssh 你的远程用户名@远程服务器IP - 在服务器终端直接执行命令:
python ~/score.py --folder_name /服务器上的目标文件夹路径
运行完成后把结果文件拷回本地即可。
- 把本地代码传到远程服务器:
- 方案3:修改代码支持远程读取(适合可自定义代码的场景)
如果你只能在本地运行程序,也不想挂载目录,可以修改score.py的代码,引入paramiko等SSH/SFTP库,让程序支持直接读取远程路径下的文件,同样只会传输程序实际用到的文件内容。
注意事项:
- 用SSHFS挂载时如果网络不稳定可能会出现IO错误,建议在稳定的网络环境下使用,或开启SSH的保活配置。
- 如果是单文件超过10GB的场景,优先选择在远程服务器本地运行代码,避免网络传输瓶颈。
内容的提问来源于stack exchange,提问作者hanugm
相关产品推荐
相关产品推荐

