Python 3.x 使用python 3.5的urllib上的SMb处理程序
我正在尝试从我的windows共享文件夹中获取一些文件,在Ubuntu操作系统上运行python3.5。因为urllib2在python3上不可用 我有一个简单的代码: 目录=smb://user:passw@xxx.xxx.x.xx/shared_folder/' 对于符号中的符号:Python 3.x 使用python 3.5的urllib上的SMb处理程序,python-3.x,urllib,smb,Python 3.x,Urllib,Smb,我正在尝试从我的windows共享文件夹中获取一些文件,在Ubuntu操作系统上运行python3.5。因为urllib2在python3上不可用 我有一个简单的代码: 目录=smb://user:passw@xxx.xxx.x.xx/shared_folder/' 对于符号中的符号: path = dir+symbol+'.csv' director = urllib.request.build_opener(SMBHandler) fh = director.open(pa
path = dir+symbol+'.csv'
director = urllib.request.build_opener(SMBHandler)
fh = director.open(path)
# ..... do some stuff
fh.close()
符号是当前存在的n个文件的列表。该代码适用于符号中的前2个元素,但由于某些原因,在2个循环之后,我得到了这个错误
Traceback (most recent call last):
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBHandler.py", line 70, in smb_open
file_attrs, retrlen = conn.retrieveFile(service, path, fp)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 267, in retrieveFile
return self.retrieveFileFromOffset(service_name, path, file_obj, 0, -1, timeout)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 299, in retrieveFileFromOffset
self._pollForNetBIOSPacket(timeout)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 583, in _pollForNetBIOSPacket
self.feedData(data)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/nmb/base.py", line 54, in feedData
self._processNMBSessionPacket(self.data_nmb)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/nmb/base.py", line 75, in _processNMBSessionPacket
self.onNMBSessionMessage(packet.flags, packet.data)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py", line 137, in onNMBSessionMessage
if self._updateState(self.smb_message):
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py", line 276, in _updateState_SMB2
req.callback(message, **req.kwargs)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py", line 856, in connectCB
errback(OperationFailure('Failed to retrieve %s on %s: Unable to connect to shared device' % ( path, service_name ), messages_history))
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 293, in eb
raise failure
smb.smb_structs.OperationFailure: Failed to retrieve AUDNZD30.hst on mt4_history: Unable to connect to shared device
==================== SMB Message 0 ====================
SMB Header:
-----------
Command: 0x03 (SMB2_COM_TREE_CONNECT)
Status: 0x00000000
Flags: 0x00
PID: 8917
MID: 3
TID: 0
Data: 58 bytes
b'09000000480032005c005c00530048004f0043004b002d00440052004900560045005c006d00740034005f0068006900730074006f0072007900'
SMB Data Packet (hex):
----------------------
b'fe534d4240000000000000000300000000000000000000000300000000000000d52200000000000075000064004400000000000000000000000000000000000009000000480032005c005c00530048004f0043004b002d00440052004900560045005c006d00740034005f0068006900730074006f0072007900'
==================== SMB Message 1 ====================
SMB Header:
-----------
Command: 0x03 (SMB2_COM_TREE_CONNECT)
Status: 0xC00000D0
Flags: 0x01
PID: 8917
MID: 3
TID: 0
Data: 9 bytes
b'09000000000000005c'
SMB Data Packet (hex):
----------------------
b'fe534d4240000000d00000c00300010001000000000000000300000000000000d52200000000000075000064004400000000000000000000000000000000000009000000000000005c'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/shock/Documents/EclipseWorkspace/HEDA/test.py", line 33, in <module>
fh = director.open(path)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/urllib/request.py", line 466, in open
response = self._open(req, data)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/urllib/request.py", line 484, in _open
'_open', req)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/urllib/request.py", line 444, in _call_chain
result = func(*args)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBHandler.py", line 81, in smb_open
raise urllib.error.URLError('smb error: %s' % ex).with_traceback(sys.exc_info()[2])
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBHandler.py", line 70, in smb_open
file_attrs, retrlen = conn.retrieveFile(service, path, fp)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 267, in retrieveFile
return self.retrieveFileFromOffset(service_name, path, file_obj, 0, -1, timeout)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 299, in retrieveFileFromOffset
self._pollForNetBIOSPacket(timeout)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 583, in _pollForNetBIOSPacket
self.feedData(data)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/nmb/base.py", line 54, in feedData
self._processNMBSessionPacket(self.data_nmb)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/nmb/base.py", line 75, in _processNMBSessionPacket
self.onNMBSessionMessage(packet.flags, packet.data)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py", line 137, in onNMBSessionMessage
if self._updateState(self.smb_message):
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py", line 276, in _updateState_SMB2
req.callback(message, **req.kwargs)
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py", line 856, in connectCB
errback(OperationFailure('Failed to retrieve %s on %s: Unable to connect to shared device' % ( path, service_name ), messages_history))
File "/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/SMBConnection.py", line 293, in eb
raise failure
urllib.error.URLError: <urlopen error smb error: Failed to retrieve AUDNZD30.hst on mt4_history: Unable to connect to shared device
回溯(最近一次呼叫最后一次):
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBHandler.py”,第70行,在smb_open中
file_attrs,retrlen=conn.retrieveFile(服务,路径,fp)
retrieveFile中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第267行
返回self.retrieveFileFromOffset(服务名称、路径、文件对象、0,-1、超时)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第299行,位于retrieveFileFromOffset中
self.\u pollForNetBIOSPacket(超时)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第583行,在_pollForNetBIOSPacket中
自反馈数据(数据)
feedData中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/nmb/base.py”,第54行
self.\u processNMBSessionPacket(self.data\u nmb)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/nmb/base.py”,第75行,在_processNMBSessionPacket中
self.onNMBSessionMessage(packet.flags、packet.data)
onNMBSessionMessage中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/base.py”,第137行
如果self.\u updateState(self.smb\u消息):
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py”,第276行,位于更新状态和SMB2中
请求回调(消息,**req.kwargs)
connectCB中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/base.py”,第856行
errback(OperationFailure('在%s上检索%s失败:无法连接到共享设备“%”(路径、服务名称)、消息\历史记录))
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第293行,电子表格
提出失败
smb.smb_structs.OperationFailure:无法检索mt4上的AUDNZD30.hst_历史记录:无法连接到共享设备
=========================SMB消息0====================
SMB标头:
-----------
命令:0x03(SMB2\u COM\u TREE\u CONNECT)
状态:0x00000000
标志:0x00
PID:8917
中期:3
工业贸易署:0
数据:58字节
b'09000000480032005C0005C000530048004F0043004B002D00440052004900560045005C006D0074034005F0068006900730074006F0072007900'
SMB数据包(十六进制):
----------------------
b'FE534D4240000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000D5220000000000000750000640000000000000000000000000000000900000480032005C0005C0005C000530048004F0043004B002D004400520004900560045005C0074034005F006800690070074006F0072007900'
============================SMB消息1====================
SMB标头:
-----------
命令:0x03(SMB2\u COM\u TREE\u CONNECT)
状态:0xC00000D0
标志:0x01
PID:8917
中期:3
工业贸易署:0
数据:9字节
b'09000000000000005c'
SMB数据包(十六进制):
----------------------
b'FE534D4240000000D00000C003000100010000000000000300000000000000D522000000000000075000064000000000000000000000000000000000000000000000000000000000000000000000000000000000005C'
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/shock/Documents/EclipseWorkspace/HEDA/test.py”,第33行,在
fh=控制器打开(路径)
打开文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/urllib/request.py”,第466行
响应=自身打开(请求,数据)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/urllib/request.py”,第484行,打开
"开放",
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/urllib/request.py”,第444行,在调用链中
结果=func(*args)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBHandler.py”,第81行,在smb_open中
引发urllib.error.URLEROR('smb错误:%s'%ex.),并使用\u回溯(sys.exc\u info()[2])
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBHandler.py”,第70行,在smb_open中
file_attrs,retrlen=conn.retrieveFile(服务,路径,fp)
retrieveFile中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第267行
返回self.retrieveFileFromOffset(服务名称、路径、文件对象、0,-1、超时)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第299行,位于retrieveFileFromOffset中
self.\u pollForNetBIOSPacket(超时)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第583行,在_pollForNetBIOSPacket中
自反馈数据(数据)
feedData中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/nmb/base.py”,第54行
self.\u processNMBSessionPacket(self.data\u nmb)
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/nmb/base.py”,第75行,在_processNMBSessionPacket中
self.onNMBSessionMessage(packet.flags、packet.data)
onNMBSessionMessage中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/base.py”,第137行
如果self.\u updateState(self.smb\u消息):
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site-packages/smb/base.py”,第276行,位于更新状态和SMB2中
请求回调(消息,**req.kwargs)
connectCB中的文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/base.py”,第856行
errback(OperationFailure('在%s上检索%s失败:无法连接到共享设备“%”(路径、服务名称)、消息\历史记录))
文件“/home/shock/anaconda3/envs/tensorflow/lib/python3.5/site packages/smb/SMBConnection.py”,第293行,电子表格
提出失败
urllib.error.urleror: