2016-08-21 6 views
0

のIPを含む完全なディレクトリを取得、私は、私のディレクトリのフルパスを取得するようなものたい:私はQFileDialogを与えるために得ることができますどのようPyQtはQFileDialog - ディスク

//192.168.1.23/D/test/test/aaaa/ 

または

//192.168.1.23/D:/test/test/aaaa/ 

を私が選択したHDDのIPアドレス?現在

self.project= str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory", lastDir)) 

を使用して

os.path.dirname(self.project)経由だけで、これまでダウンD:\

のおかげで行くことを行くみました!

答えて

0

私がどこでそれを見つけたのかわからないが、最後に私が従ったオプションがここにある。ユーザーがどのデバイスを使用するか決定することができます

from netifaces import interfaces, ifaddresses, AF_INET 
p =[] 
for ifaceName in interfaces(): 
    addresses = [i['addr'] for i in ifaddresses(ifaceName).setdefault(AF_INET, [{'addr':'No IP addr'}])] 
    p.append(ifaceName.join(addresses)) 

print p[0],p[1] 
print p 
1

QFileDialogでPyQtで直接できないことは、別の方法でマシンのIPアドレスを取得し、それをファイルパスなどと連結することです。 QFileDialogはあなたのマシン上の他のアドレスに興味を持っている場合にもQNetworkInterface http://pyqt.sourceforge.net/Docs/PyQt4/qnetworkinterface.html#interfaceFromNameを見てみることができますが、上記の例は単にへのルートに使用のIPアドレスを返す

import socket 
def get_ip_addr(): 
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
    s.connect(("8.8.8.8", 80)) 
    return s.getsockname()[0] 

ip = get_ip_addr() 

path = self.project= str(QtGui.QFileDialog.getExistingDirectory(self, "Select Directory", lastDir)) 

file_path = '//{}/{}'.format(ip, path) # or what ever formatting suits you 

「ネットワークを意識」ではありません8.8.8.8

+0

これはソリューションの正しいアイデアですが、実際にリモートエンドポイントに接続せずに取得できます。代わりに 'socket.gethostbyname(socket.gethostname())'のようなものを使用したいと思います。 – bnaecker

+0

'/etc/hosts'...Linuxマシンでホスト名が' 127.0.0.1'に設定されているマシンで '127.0.0.1'を返すかもしれませんが、Linuxマシンでは明らかにwindowsが使用されているようですので、しかし私は確信していません – danidee

+0

ねえ、私はそれを考えました。しかし、もし私が//192.168.1.50/Eと言うgethostname()optやsocketnameを実行すると、結果が//192.168.1.23/Eとなるネットワークドライブをリストアップしようとすると...間違った場所に向かうでしょうか?私は2枚のネットワークカードを持っているだけでなく、私は与えられたドライバに対して2つのIPアドレスが必要かもしれないと思う。正直なところ私はまだそれをチェックしていないが、私はそれを行くだろうか多分私はここに間違っている...ありがとう! – Dariusz

関連する問題