J'ai un serveur distant avec quelques fichiers.
smb://ftpsrv/public/
Je peux y être autorisé en tant qu'utilisateur anonyme. En Java je pourrais simplement écrire un tel code
SmbFile root = new SmbFile(SMB_ROOT);
Et avoir la possibilité de travailler avec des fichiers à l'intérieur (c'est tout ce dont j'ai besoin, une rangée!), Mais je ne trouve pas comment gérer cette tâche en python3, il y a beaucoup de ressources, mais je pense qu'elles ne sont pas pertinentes pour moi, car ils sont souvent adaptés à python2 et aux anciennes approches. Existe-t-il un moyen simple, similaire à Java ci-dessus? Ou quelqu'un peut-il fournir une vraie solution de travail si, par exemple, je veux accéder au fichier fgg.txt
Dans smb://ftpsrv/public/
Y a-t-il une bibliothèque vraiment pratique pour résoudre ce problème?
Par exemple sur site
import tempfile
from smb.SMBConnection import SMBConnection
# There will be some mechanism to capture userID, password, client_machine_name, server_name and server_ip
# client_machine_name can be an arbitary ASCII string
# server_name should match the remote machine name, or else the connection will be rejected
conn = SMBConnection(userID, password, client_machine_name, server_name, use_ntlm_v2 = True)
assert conn.connect(server_ip, 139)
file_obj = tempfile.NamedTemporaryFile()
file_attributes, filesize = conn.retrieveFile('smbtest', '/rfc1001.txt', file_obj)
# Retrieved file contents are inside file_obj
# Do what you need with the file_obj and then close it
# Note that the file obj is positioned at the end-of-file,
# so you might need to perform a file_obj.seek() if you need
# to read from the beginning
file_obj.close()
Suis-je sérieusement obligé de fournir tous ces détails conn = SMBConnection(userID, password, client_machine_name, server_name, use_ntlm_v2 = True)
?
Un exemple simple d'ouverture d'un fichier en utilisant urllib et pysmb dans Python 3
import urllib
from smb.SMBHandler import SMBHandler
opener = urllib.request.build_opener(SMBHandler)
fh = opener.open('smb://Host/share/file.txt')
data = fh.read()
fh.close()
Je n'ai pas de partage anonyme SMB prêt à le tester, mais ce code devrait fonctionner.
urllib2 est le paquet python 2, dans python 3 il a été renommé simplement urllib et certaines choses ont été déplacées).