使用前提:
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)