Python操作Windows共享文件夹

Windows共享

共享文件夹

随便选择一个文件夹,然后右键 授予访问权限->特定用户
在这里插入图片描述
指定可以访问用户的权限,默认当前用户和管理员有可读可写的权限。访问时会要求输入用户名密码,也可以增加Everyone,这样就可以不指定用户密码,Everyone默认权限是可读,可以自行修改
在这里插入图片描述

共享磁盘

比如共享E盘,我的电脑右键E盘,选择共享一栏->高级共享-勾选共享,设置权限即可。如果不需要Everyone的访问,可以不修改权限
在这里插入图片描述

ubuntu挂载

假设共享的电脑IP是192.168.1.2,共享的文件夹是Software
创建一个文件夹用于共享
mkdir ~/Software
sudo mount -t cifs -o username=用户名,password=密码 //192.168.1.2/Software ~/Software

注意普通用户无法使用mount,所以挂载之后~/Software文件夹的权限只有root能访问

python 访问

pip install pysmb

github: https://github.com/miketeo/pysmb
文档: http://pysmb.readthedocs.io/

连接服务器
from smb.SMBConnection import SMBConnection

host = "192.168.1.2"  #ip或域名,改成你自己的
username = "user" #用户名,改成你自己的
password = "pass" #密码,改成你自己的
my_name = "aaaa" # 这个随便,可以为空字符串
remote_name = "WIN-1QI0CPE887P" # 这个是共享主机的主机名,listShares会用到,不用listShares的话可以为空字符串
conn = SMBConnection(username, password,my_name , remote_name , is_direct_tcp=True)
result = conn.connect(host, 445) #smb协议默认端口445
print("登录状态", result)

错误: ConnectionResetError: [Errno 104] Connection reset by peer
加上is_direct_tcp=True就可以了

列出服务器当前共享的所有目录

需要给定远程服务器主机名,remote_name。不然会抛出异常

for share in conn.listShares():
    print(share.name)
列出共享目录下的所有文件

第一个参数是共享文件夹名称,也就是上面的Software。第二个参数是相对于共享目录的路径,比如你想列出 Software/file目录,第二个参数就填/file,第一个/应该可有可无

for file in conn.listPath("Software", "/"):
    print(i.filename)
上传文件

将当前目录的1.txt文件上传到服务器上 Software/11.txt。如果已存在会覆盖掉

with open('1.txt', 'rb') as f:
    conn.storeFile("Software","11.txt", f)
下载文件

将服务器上的Software/11.txt下载到本地并保存为1.txt

with open('1.txt', 'wb') as fw:
    conn.retrieveFile("Software","11.txt",fw) 
创建文件夹

无返回值,没报错就是创建成功
conn.createDirectory("Software", "test")

删除文件

第二个参数是要删除的文件,可包含通配符。第三个参数是否删除目录
`conn.deleteFiles(“Software”, “test/*”, delete_matching_folders=True)

获取文件信息

获取文件或文件夹信息,比如创建时间,文件大小,修改时间等。文件不存在时抛出异常。

file_info = conn.getAttributes("Software", "11.txt")

# 更多属性可以dir(file_info )看下
print(file_info.create_time, file_info.alloc_size, file_info.file_size)
print(file_info.isDirectory, file_info.isReadOnly)
重命名文件

conn.rename("Software"、"11.txt"、"22.txt")

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值