Python 结合Tkinter和SSHFS以便在远程服务器上使用tkFileDialog
我想提供一个简单的GUI来为我的应用程序选择远程服务器上的文件。Tkinter小部件本身不支持这一点,因此我正在寻找一些解决方法。我的本地机器是Mac,远程机器是CentOS 6.9 我需要的进程类型如下:用户选择远程文件。python脚本用于从该文件提取信息,并将其写入同一目录中的新文件 更简单的方法可能是用户通过Python 结合Tkinter和SSHFS以便在远程服务器上使用tkFileDialog,python,tkinter,sshfs,Python,Tkinter,Sshfs,我想提供一个简单的GUI来为我的应用程序选择远程服务器上的文件。Tkinter小部件本身不支持这一点,因此我正在寻找一些解决方法。我的本地机器是Mac,远程机器是CentOS 6.9 我需要的进程类型如下:用户选择远程文件。python脚本用于从该文件提取信息,并将其写入同一目录中的新文件 更简单的方法可能是用户通过filename=input(“Path to file:”)提供文件名,但这需要用户首先从远程服务器获取路径。理想情况下,我希望应用程序是自我一致的 SSHFS能否与tkFileD
filename=input(“Path to file:”)
提供文件名,但这需要用户首先从远程服务器获取路径。理想情况下,我希望应用程序是自我一致的
SSHFS能否与tkFileDialog
模块结合使用?用户将遍历已装载的文件系统,选择文件,执行操作,新文件将存储在已装载的文件系统中,并自动传输到远程系统。可能吗
或者,疯狂的想法:我会在本地重新创建远程
$HOME
文件结构,但只是创建一个临时目录和一堆正确命名的空文件。用户可以遍历这个“假”文件系统,选择感兴趣的文件,然后应用程序可以使用此路径检索文件,执行操作,并发回新文件。。。好的,也许不是最优雅的解决方案……我在笔记本(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\u pi
,并阻止对/home/
的访问,因此它只能限制对某些文件夹及其子文件夹的访问
我用Python进行了测试,结果很有效:
选择文件tkFileDialog.askopenfilename()
- 读取和写入文件的标准
,open()
,read()
write()
创建文件夹os.makedirs(dirname)
获取文件夹中的文件名os.listdir(dirname)
Caja/Nemo/Nautilus
,并使用地址sftp://user@domain.com
我可以看到像本地文件一样的远程文件夹和文件(在使用ssh
的服务器上)。可能它安装在某个文件夹中,我可以使用任何工具来处理远程文件,但我没有尝试tkFileDialog。我的本地机器是Mac,远程是CentOS。我测试并安装了我的Raspberry Pi计算机(带Debian),作为文件夹/run/user/1000/gvfs/sftp:host=Raspberry,user=pi/
我可以用askopenfilename
选择文件,它可以用标准的open()
和read()
读取它。但是我不知道它是否使用了sshfs
或者更确切地说是gvfs
您能提供一个简单的代码示例吗?有关SSHFS的文档中缺少一些有用的示例。我不能将文件管理器与路径sftp://pi@树莓
,它会自动挂载它。我不必手动挂载它。所有远程内容都下载到本地计算机上了吗?不是,它一直保持打开ssh连接,当您read()
文件时,它必须从服务器获取它,当您write()
时,它会将它发送到服务器上。我可以确认它也在我的系统上工作。这太酷了!