2017-08-02 73 views
0

我正在編寫一個有時使用HTTP下載文件的GTK應用程序。由於我不想阻止正常執行,因此我顯然不能使用urllib或Requests,所以我試圖使用GIO。但是,通過HTTP下載文件時,我得到GLib.Error: g-io-error-quark: Operation not supported (15)file://正常工作)。使用GLib的GIO API時不支持HTTP

from gi.repository import Gio 
print(Gio.File.new_for_uri("file:///etc/profile").load_contents(None)) 
print(Gio.File.new_for_uri("http://example.org").load_contents(None)) 

第一條語句(該file://)按預期工作,但第二個(http://)給出了上述錯誤(低於滿輸出)。在我的真實程序中,我使用異步版本,但同步版本較短並且出現相同的錯誤。

(True, contents=b'# /etc/profile\n\n [-snip-]') 
Traceback (most recent call last): 
    File "/tmp/gio.py", line 3, in <module> 
    print(Gio.File.new_for_uri("http://example.org").load_contents(None)) 
GLib.Error: g-io-error-quark: Operation not supported (15) 

回答

0

確保您有http後端的安裝GVFS,和你的程序可以訪問哪些gvfsd正在運行的d-Bus的會話總線。

GVFS後端通常在像gvfs-backends這樣的分發包中提供。

默認情況下,GIO不包含加載URI以外的URI的支持。對於所有其他URI,它與GVFS守護進程進行通信,後者進而執行實際的I/O。

+0

似乎它是Arch上的'gvfs'。 – Caagr98

相關問題