當前位置:首頁 » 編程語言 » zippython

zippython

發布時間: 2022-01-08 10:15:13

1. python 關於print 輸出 zip()的

print zipped就OK了,正確的代碼如下:

ta=[1,3,4]
tb=[35,56,7]
zipped=zip(ta,tb)
printzipped

2. 怎麼從zip里提取文件 Python

Python自帶模塊zipfile可以完成zip壓縮文件的讀寫,而且使用非常方便,下面就來演示一下Python讀寫zip文件:

Python讀zip文件
下面的代碼給出了用Python讀取zip文件,列印出壓縮文件裡面所有的文件,並讀取壓縮文件中的第一個文件。
import zipfile
z = zipfile.ZipFile("zipfile.zip", "r")
#列印zip文件中的文件列表
for filename in z.namelist( ):
print 'File:', filename
#讀取zip文件中的第一個文件
first_file_name = z.namelist()[0]
content = z.read(first_file_name)
print first_file_name
print content
Python寫/創建zip文件
Python寫Zip文件主要用到ZipFile的write函數。
import zipfile
z = zipfile.ZipFile('test.zip', 'w', zipfile.ZIP_DEFLATED)
z.write('test.html')
z.close( )
在創建ZipFile實例的時候,有2點要注意:
要用'w'或'a'模式,用可寫的方式打開zip文件 壓縮模式有ZIP_STORED 和 ZIP_DEFLATED,ZIP_STORED只是存儲模式,不會對文件進行壓縮,這個是默認值,如果你需要對文件進行壓縮,必須使用ZIP_DEFLATED模式。

3. python怎樣壓縮和解壓縮ZIP文件

1、說明

python使用zipfile模塊來壓縮和解壓zip文件

2、代碼

importos,os.path
importzipfile

defzip_dir(dirname,zipfilename):
filelist=[]
ifos.path.isfile(dirname):
filelist.append(dirname)
else:
forroot,dirs,filesinos.walk(dirname):
fornameinfiles:
filelist.append(os.path.join(root,name))

zf=zipfile.ZipFile(zipfilename,"w",zipfile.zlib.DEFLATED)
fortarinfilelist:
arcname=tar[len(dirname):]
#printarcname
zf.write(tar,arcname)
zf.close()


defunzip_file(zipfilename,unziptodir):
ifnotos.path.exists(unziptodir):os.mkdir(unziptodir)
zfobj=zipfile.ZipFile(zipfilename)
fornameinzfobj.namelist():
name=name.replace('\','/')

ifname.endswith('/'):
os.mkdir(os.path.join(unziptodir,name))
else:
ext_filename=os.path.join(unziptodir,name)
ext_dir=os.path.dirname(ext_filename)
ifnotos.path.exists(ext_dir):os.mkdir(ext_dir)
outfile=open(ext_filename,'wb')
outfile.write(zfobj.read(name))
outfile.close()

if__name__=='__main__':
zip_dir(r'd:/python/test',r'd:/python/test.zip')
unzip_file(r'd:/python/test.zip',r'd:/python/test2')

執行結果

順利生成相應文件

3、備注

zip文件格式是通用的文檔壓縮標准,在zipfile模塊中,使用ZipFile類來操作zip文件,下面具體介紹一下:
class zipfile.ZipFile(file[, mode[, compression[, allowZip64]]])

創建一個ZipFile對象,表示一個zip文件。參數file表示文件的路徑或類文件對象(file-like object);參數mode指示打開zip文件的模式,默認值為'r',表示讀已經存在的zip文件,也可以為'w'或'a','w'表示新建一個zip文檔或覆蓋一個已經存在的zip文檔,'a'表示將數據附加到一個現存的zip文檔中。參數compression表示在寫zip文檔時使用的壓縮方法,它的值可以是zipfile. ZIP_STORED 或zipfile. ZIP_DEFLATED。如果要操作的zip文件大小超過2G,應該將allowZip64設置為True。

ZipFile還提供了如下常用的方法和屬性:
ZipFile.getinfo(name):

獲取zip文檔內指定文件的信息。返回一個zipfile.ZipInfo對象,它包括文件的詳細信息。將在下面 具體介紹該對象。
ZipFile.infolist()

獲取zip文檔內所有文件的信息,返回一個zipfile.ZipInfo的列表。
ZipFile.namelist()

獲取zip文檔內所有文件的名稱列表。
ZipFile.extract(member[, path[, pwd]])

4. python zip 是什麼

zip就是把2個數組糅在一起
x=[1, 2, 3, 4, 5 ]
y=[6, 7, 8, 9, 10]
zip(x, y)就得到了
[(1, 6), (2, 7), (3, 8), (4, 9), (5, 10)]

比如你有2組坐標,你想兩兩對應的相加,那麼zip函數就很有用了。
再比如,你有2個數組A,B,A存了班級里的人的名字,B是每個人的考試分數,你需要通過某個人的名字來查考試分數,那你需要一個字典,zip可以很方便地幫你建立字典:
>>> x=['bob','tom','kitty']
>>> y=[80,90,95]
>>>d=dict(zip(x,y))
[('bob', 80), ('tom', 90), ('kitty', 95)]
>>> d['bob']
返回80,多方便啊

5. Python版本3.3有zip這個用法嗎

當然是有的!下面具體分析不同:

zip方法在Python 2 和Python 3中的不同

為何有這種不同
更多註解

問題一:zip方法在Python 2 和Python 3中的不同
Python 2 的代碼演示:
$ python2
>>> a = zip((1, 2), (3, 4))
>>> a
[(1, 2), (3, 4)]
# 可以看到這里返回的是一個list

Python 3 的代碼演示:
$ python3
>>> a = zip((1, 2), (3, 4))
>>> a
<zip object at 0x1007096c8>
# 可以看到這里返回的是一個對象,這里就是2和3的不同點
>>> dir(a) # 查看a的相關屬性
['__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__lt__', '__ne__', '__new__', '__next__', '__rece__', '__rece_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__']
# 這里值得注意的是 '__iter__' 和 '__next__' 方法,說明a是一個支持遍歷的對象
# 既然知道了a是一個支持遍歷的對象,我們也就基本明白了a的用法了
### 和Python2的區別(一):返回的是一個支持遍歷的對象,而不是一個list本身
>>> for i in a: print i # in 方法
...
(1, 3)
(2, 4)
>>> next(a) # 我們測試__next__方法
Traceback (most recent call last):
File "<stdin>", line 1, in <mole>
StopIteration # 說明next方法是支持的,但是這里也說明了對象只能遍歷一次
>>> a = zip((1, 2), (3, 4)) # 這里需要重新賦值,因為這個對象只能遍歷一次
>>> next(a)
(1, 3) # 運行良好
### 返回的對象支持遍歷的操作

問題二:為何有這種不同
我想最重要的原因是節約了不少的內存吧。Python的運行效率和編譯類型的語言自然是沒法比,但是能優化就優化一點吧~誰不想有更高的追求呢。
問題三:更多註解
這個zip在不同版本的不同反應了python的一個演變:大部分返回list的函數不在返回list,而是返回一個支持遍歷的對象,比如map、fiter之類的,基本的例子如下:
$ python3
>>> a = map(abs, [1, 2, -3])
>>> a
<map object at 0x100707ed0>
>>> list(a) # 如果不習慣,可以自己手動轉化為list,也是寫兼容代碼需要注意的地方
[1, 2, 3]

$ python2
>>> a = map(abs, [1, 2, -3])
>>> a
[1, 2, 3]

6. python的zip函數,有沒有與之對應進行相反操作的函數

>>>a=zip([1,2,3],[4,5,6])
>>>a
[(1,4),(2,5),(3,6)]
>>>zip(*a)
[(1,2,3),(4,5,6)]

利用*號操作符,可以將list unzip(解壓)

7. python zip函數的用法

定義:zip([iterable, ...])
zip()是Python的一個內建函數,它接受一系列可迭代的對象作為參數,將對象中對應的元素打包成一個個tuple(元組),然後返回由這些 tuples組成的list(列表)。若傳入參數的長度不等,則返回list的長度和參數中長度最短的對象相同。利用*號操作符,可以將list unzip(解壓),看下面的例子就明白了:
1 2 3 4 5 6 7 8 9
>>> a = [1,2,3] >>> b = [4,5,6] >>> c = [4,5,6,7,8] >>> zipped = zip(a,b) [(1, 4), (2, 5), (3, 6)] >>> zip(a,c) [(1, 4), (2, 5), (3, 6)] >>> zip(*zipped) [(1, 2, 3), (4, 5, 6)]

對於這個並不是很常用函數,下面舉幾個例子說明它的用法:

* 二維矩陣變換(矩陣的行列互換)
比如我們有一個由列表描述的二維矩陣
a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
通過python列表推導的方法,我們也能輕易完成這個任務
1 2
print [ [row[col] for row in a] for col in range(len(a[0]))] [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

另外一種讓人困惑的方法就是利用zip函數:
1 2 3 4 5
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> zip(*a) [(1, 4, 7), (2, 5, 8), (3, 6, 9)] >>> map(list,zip(*a)) [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

這種方法速度更快但也更難以理解,將list看成tuple解壓,恰好得到我們「行列互換」的效果,再通過對每個元素應用list()函數,將tuple轉換為list
* 以指定概率獲取元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
>>> import random >>> def random_pick(seq,probabilities): x = random.uniform(0, 1) cumulative_probability = 0.0 for item, item_probability in zip(seq, probabilities): cumulative_probability += item_probability if x < cumulative_probability: break return item >>> for i in range(15): random_pick("abc",[0.1,0.3,0.6]) 'c' 'b' 'c' 'c' 'a' 'b' 'c' 'c' 'c' 'a' 'b' 'b' 'c' 'a' 'c'

這個函數有個限制,指定概率的列表必須和元素一一對應,而且和為1,否則這個函數可能不能像預想的那樣工作。
稍微解釋下,先利用random.uniform()函數生成一個0-1之間的隨機數並復制給x,利用zip()函數將元素和他對應的概率打包成tuple,然後將每個元素的概率進行疊加,直到和大於x終止循環
這樣,」a」被選中的概率就是x取值位於0-0.1的概率,同理」b」為0.1-0.4,」c」為0.4-1.0,假設x是在0-1之間平均取值的,顯然我們的目的已經達到

8. python如何從zip壓縮包內過濾出指後綴文件

解決方案
import os
import fnmatch
import zipfile
import re
def iterfindfiles(path, fnexp):
for root, dirs, files in os.walk(path):
for filename in fnmatch.filter(files, fnexp):
yield os.path.join(root, filename)
result=""
for filelist in iterfindfiles("D:Temporary", "*.zip"):
z = zipfile.ZipFile(filelist, "r")
for file in z.namelist():
result=result+file+"n"
print "以下內容是壓縮包所包含文件:"
print result+"rn"
unicodepage=result.decode("utf-8")
myItems=re.findall("([wd]*?.txt)",unicodepage,re.S)
items=[]
print "以下是獲取所有以.txt結束的文本"
for item in myItems:
items.append(item.replace("rn",""))
print items

9. Python for 取ZIP函數值

zip() 方法返回的是一個zip對象不能使用迭代遍歷,你把它改成 for i in list(k) 就可以了

10. python 當中的zip( )函數到底是幹嘛的

這個可以理解為拉鏈,將兩個list拉到一起來,每個對應元素做一定操作後,合並成一個list.
比如:
zip([1,2,3],['a','b','c'])
結果是
[(1, 'a'), (2, 'b'), (3, 'c')]

熱點內容
安卓上哪裡下大型游戲 發布:2024-12-23 15:10:58 瀏覽:189
明日之後目前適用於什麼配置 發布:2024-12-23 14:56:09 瀏覽:56
php全形半形 發布:2024-12-23 14:55:17 瀏覽:829
手機上傳助手 發布:2024-12-23 14:55:14 瀏覽:733
什麼樣的主機配置吃雞開全效 發布:2024-12-23 14:55:13 瀏覽:831
安卓我的世界114版本有什麼 發布:2024-12-23 14:42:17 瀏覽:711
vbox源碼 發布:2024-12-23 14:41:32 瀏覽:279
詩經是怎麼存儲 發布:2024-12-23 14:41:29 瀏覽:661
屏蔽視頻廣告腳本 發布:2024-12-23 14:41:24 瀏覽:420
php解析pdf 發布:2024-12-23 14:40:01 瀏覽:821