1.一直遇到路径找不到的问题。这个问题我纠结了好久。后来发现直接解压当前目录,没有问题。我就怀疑是路径问题了,最后发现就只是因为一个空格问题!创建的文件夹后面没有空格。但是找的路径里面是有空格的。好久我都没看出来。。。解决方法,用strip()去一下空格就可以了。
2.split犯的一个错误。我想把文件名里面包含monday和tuesday的解压到一个指定的文件夹中。比如Thisismonday,Thisistuesday。我想都解压到Thisis这个文件夹中,于是我用了这样的话。
paths = portion[0].split("monday"or"tuesday")[0].strip()
很明显,这种切分会导致失败,因为split找不到第一个的时候,它会当作空值进行切分。后面的tuesday就不会再使用到了。正确的写法应该是
paths = portion[0].split("monday")
[0].split("tuesday")[0].strip()
代码实现的功能是把文件名中以monday或tuesday结尾的zip文件进行解压,例如Thisismonday.zip,Thisismonday.zip,当前目录下创建新的Thisis,解压到Thisis文件夹中。代码还可以进一步扩展,修改一下就可以自己用了。
import os,sys,zipfile
path = sys.argv[1]
mylist = os.listdir(path)
l = []
a = [l.append(os.path.join(path,i)) for i in mylist]
for mypath in l:
os.chdir(mypath)
for i in os.listdir(mypath):
portion = os.path.splitext(i)
savepath = os.path.join(mypath,i)
if portion[0][-6:] == "monday"or"uesday" and portion[1] == ".zip":
myzipfile = zipfile.ZipFile(savepath,"r")
for file in myzipfile.namelist():
paths = portion[0].split("monday")[0].split("tuesday")[0].strip()
if os.path.isdir(os.path.join(os.getcwd(),paths)):
pass
else:
os.mkdir(os.path.join(os.getcwd(),paths))
pathss = os.path.join(os.getcwd(),paths)
myzipfile.extract(file,pathss)
myzipfile.close()