结合 Tkinter 和 SSHFS 以便在远程服务器上使用 tkFileDialog

Combining Tkinter and SSHFS in order to use tkFileDialog on remote server

我想为我的应用程序 selecting 远程服务器上的文件提供一个简单的 GUI。 Tkinter 小部件本身不支持此功能,因此我正在寻找一些解决方法。我的本地机器是Mac,远程机器是CentOS 6.9.

我需要的进程类型是这样的:用户selects 一个远程文件。 python 脚本用于从此文件中提取信息,并将其写入同一目录中的新文件。

用户通过 filename = input("Path to file: ") 提供文件名可能更简单,但这要求用户首先从远程服务器获取路径。理想情况下,我希望应用程序是自洽的。

SSHFS可以和tkFileDialog模块结合使用吗?用户将遍历已挂载的文件系统,select 文件,将执行操作,新文件将存储在已挂载的文件系统中并自动传输到远程系统。可能吗?

或者,疯狂的想法:我会在本地重新创建远程 $HOME 文件结构,但只创建一个临时目录和一堆正确命名的空文件。用户可以遍历这个 "fake" 文件系统,select 感兴趣的文件,然后应用程序可以使用这个路径来检索文件,执行操作,并发回新文件......好吧,也许不是最优雅的解决方案....

我在笔记本 (Linux Mint) 上测试了 sshfs 以访问 Raspberry Pi 上的远程文件夹(Raspbian 基于 Debian)并且它可以挂载远程文件夹作为本地文件夹,然后我可以使用 Python 和其他程序来处理远程文件。

要安装它:

mkdir local_pi
sshfs pi@192.168.1.100:/home/pi/ local_pi

# here ask for password of user `pi` 

它将远程文件夹 /home/pi/ 安装为本地文件夹 local_pi 并阻止对 /home/ 的访问,因此它可以限制对某些文件夹及其子文件夹的访问。


我在 Python 中进行了测试并且有效:

  • tkFileDialog.askopenfilename() 到 select 文件
  • 标准open()read()write()读写文件
  • os.makedirs(dirname) 创建文件夹
  • os.listdir(dirname) 获取文件夹中的文件名