如何在Python中解压缩文件?

如何在Python中解压缩文件?,python,Python,我正在做一个项目,如果文件夹中的文件正好等于20,文件就会被压缩。但如果没有20个文件,则会发送一封电子邮件 这是我的密码: 导入zipfile 进口舒蒂尔 导入子流程 导入glob 导入操作系统 导入时间 从子流程导入Popen #为实际发送函数导入smtplib 导入系统 从email.mime.text导入MIMEText 导入smtplib 导入ssl 端口=587#用于starttls smtp_server=“smtp.office365.com” 发件人\u email=“XXX.

我正在做一个项目,如果文件夹中的文件正好等于20,文件就会被压缩。但如果没有20个文件,则会发送一封电子邮件

这是我的密码:

导入zipfile
进口舒蒂尔
导入子流程
导入glob
导入操作系统
导入时间
从子流程导入Popen
#为实际发送函数导入smtplib
导入系统
从email.mime.text导入MIMEText
导入smtplib
导入ssl
端口=587#用于starttls
smtp_server=“smtp.office365.com”
发件人\u email=“XXX.com”
收件人\u email=“XXX.com”
密码='XXX'
message=”“”\
主题:你好
XXX中没有20个文件
"""
context=ssl.create\u default\u context()
位置='XXX'
检查表=glob.glob(位置+'*.zip')
对于os.walk(位置)中的文件:
如果文件==20:
检查表中的文件名:
zf=zipfile.zipfile(文件名'r')
NewName=filename.replace(位置“”)
NewName=NewName.replace('.ZIP','')
zf.extractall(位置+“解压缩\\”)
os.rename(位置+'unzip\\ZSNP\u M36\u Q0006\u00000.xls',位置+'unzip\\'+NewName+'.xls')
p=Popen(“宏\u SSC\u csv\u转换\u batch.bat”,cwd=r“XXX”)
stdout,stderr=p.communicate()
打印(p.returncode)
其他:
使用smtplib.SMTP(SMTP_服务器,端口)作为服务器:
server.ehlo()可以省略
server.starttls(context=context)
server.ehlo()可以省略
服务器登录(发件人\电子邮件、密码)
server.sendmail(发送者电子邮件、接收者电子邮件、消息)
我无法使用解压功能,有人能帮我吗


谢谢

函数
os.walk
不仅返回文件列表,即使返回了,检查是否有20个文件是由
len(files)==20
完成的,而不是
files==20
完成的。您在评论中说,所有文件都在同一个文件夹中(没有子目录),因此可以使用
os.listdir

files = os.listdir(Location)
if len(files) == 20:
    do_something()

这里还有一些其他问题,比如循环浏览文件和
检查表,我不确定这是故意的,还有一些缩进问题,但这就是你问题的答案。

所有文件都在同一个文件夹中,还是在子目录中?你知道
os.walk
返回的是什么吗?现在看看它下面的行,
file==20
。或者甚至是
os.listdir(path)
或者可能是
glob.glob(pattern)
以特定文件/模式为目标。所有文件都在同一个文件夹中是@Ofer Sadan