繁体   English   中英

PyQT QFileDialog-获取包括磁盘IP的完整目录

[英]PyQT QFileDialog - get full directory including IP of disk

我想获取目录的完整路径,例如:

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

要么

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

如何获得QFileDialog给我选择的HDD的IP地址?

目前正在使用

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

尝试通过os.path.dirname(self.project)但是只有到了D:\\

谢谢!

使用QFileDialog无法直接在PyQt中执行操作,而是使用另一种方法获取计算机的IP地址,然后将其与文件路径连接起来,如下所示。 QFileDialog不是“网络感知”的

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

如果您对计算机上的其他地址感兴趣,也可以看看QNetworkInterface http://pyqt.sourceforge.net/Docs/PyQt4/qnetworkinterface.html#interfaceFromName ,但是上面的示例仅返回使用的IP地址路由到8.8.8.8

不知道我在哪里找到的,但最后是我遵循的选项。 我让用户决定使用哪个设备进行定位

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM