Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 结合Tkinter和SSHFS以便在远程服务器上使用tkFileDialog_Python_Tkinter_Sshfs - Fatal编程技术网

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

Python 结合Tkinter和SSHFS以便在远程服务器上使用tkFileDialog,python,tkinter,sshfs,Python,Tkinter,Sshfs,我想提供一个简单的GUI来为我的应用程序选择远程服务器上的文件。Tkinter小部件本身不支持这一点,因此我正在寻找一些解决方法。我的本地机器是Mac,远程机器是CentOS 6.9 我需要的进程类型如下:用户选择远程文件。python脚本用于从该文件提取信息,并将其写入同一目录中的新文件 更简单的方法可能是用户通过filename=input(“Path to file:”)提供文件名,但这需要用户首先从远程服务器获取路径。理想情况下,我希望应用程序是自我一致的 SSHFS能否与tkFileD

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

我需要的进程类型如下:用户选择远程文件。python脚本用于从该文件提取信息,并将其写入同一目录中的新文件

更简单的方法可能是用户通过
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)
    获取文件夹中的文件名

您使用什么系统-Windows、Linux、Mac?在LinuxMint上,我可以使用标准文件管理器--
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()
时,它会将它发送到服务器上。我可以确认它也在我的系统上工作。这太酷了!