pysmb库SMBConnection的使用

使用前提:
1.两台电脑处于局域网或者外网,即链接相同wifi
2.在其中一台电脑中,右击想要共享的文件夹,属性—>共享—>按步骤操作。
3.共享成功后,打开 此电脑 ,可在网络位置下面查看。
参考链接:
https://blog.csdn.net/Qwertyuiop2016/article/details/129367401

配置后代码:

import os

from smb.SMBConnection import SMBConnection


class SmbClient:
    def __init__(self, server_ip, username, password, my_name, remote_name, share_file, file_path, csv_file_name):
        self.server_ip = server_ip  # 共享目录主机IP地址 "192.168.1.16"
        self.username = username  # 共享目录主机用户名 "admin"
        self.password = password  # 共享目录主机密码 "qwe123"
        self.my_name = my_name  # 本机计算机属性中域名 "WIN-9U4BSQ3N4L8"
        self.remote_name = remote_name  # 远端共享文件夹计算机名 "DESKTOP-HJ9DB5A"
        self.share_file = share_file  # 共享文件夹名称 'el_result'
        self.file_path = r'%s' % file_path  # 要储存的位置 r'D:\aaaaaaa'
        self.csv_file_name = csv_file_name  # 要获取的csv文件名 '全部结果.csv'

        self.connect()
        self.download()
        self.close()

    def connect(self):
        '''连接远程服务器'''
        self.conn = SMBConnection(self.username, self.password, self.my_name, self.remote_name,
                                  is_direct_tcp=True)  # is_direct_tcp=True,默认为当direct_tcp=True时,port需要445。当它是False时,端口应该是139
        assert self.conn.connect(self.server_ip, 445)

    def download(self):
        '''下载远程文件夹到本地'''
        share_list = self.conn.listShares()
        for share in share_list:
            if share.isSpecial is True:  # 排除无用的共享文件
                continue
            share_file_name = share.name  # el_result
            shared_file_list = self.conn.listPath(share_file_name, '/')
            for shared_file in shared_file_list[2:]:  # 第0个和第一的为'.','..'
                date_dir_name = shared_file.filename  # 2023.03.03
                file_name = os.path.join(self.file_path, self.remote_name,
                                         date_dir_name)  # D:\\aaaaaaa\\DESKTOP-HJ9DB5A\\2023.03.03
                if not os.path.exists(file_name):
                    os.makedirs(file_name)  # 创建文件夹
                csv_list = self.conn.listPath('el_result', f'/{date_dir_name}')
                for csv in csv_list[2:]:  # 第0个和第一的为'.','..'
                    csv_name = csv.filename  # 全部结果.csv
                    if csv.filename == self.csv_file_name:
                        with open(os.path.join(file_name, csv_name), 'wb') as file:
                            self.conn.retrieveFile(f'el_result', f'/{date_dir_name}/{csv_name}', file)
                            # print('已经下载一条数据')
                    else:
                        continue

    def close(self):
        '''关闭远程服务器'''
        self.conn.close()


if __name__ == '__main__':
    server_ip = "192.168.xx.xx"  # 共享目录主机IP地址
    username = "admin"  # 本机用户名
    password = "123456"  # 本机密码
    my_name = "WIN-9U4BSQxxxxx"  # 计算机属性中域名
    remote_name = "DESKTOP-HJ9xxxxA"  # 远端共享文件夹计算机名
    share_file = 'xx_result'
    file_path = r'D:\aaaaaaa'
    csv_file_name = '全部结果.csv'

    smb = SmbClient(server_ip, username, password, my_name, remote_name, share_file, file_path, csv_file_name)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值