python
  • python-2.7
  • zipfile
  • 2015-09-18 74 views 1 likes 
    1

    你怎麼壓縮「飛」生成的一堆文件?這種小規模之情況壓縮文件生成的文件

    IM測試:

    from time import strftime 
    import zipfile 
    
    # create new file 
    today = strftime("%Y-%m-%d %H:%M:%S") 
    
    new_file = open('testing123.txt', 'w') 
    text = 'this file was just added:' + str(today) 
    new_file.write(text) 
    
    # create zip file and write to it 
    newZip = zipfile.ZipFile("test.zip", "w") 
    newZip.write('testing123.txt') 
    new_file.close() 
    
    print "file created" 
    

    兩件事情,第一它是在腳本的頂部創建的testing123.txt是空白的,當你解壓縮創建的zip文件,這應該包括列表在循環中生成的文件。

    所以即時通訊想知道什麼是最好的方法來動態生成一堆文件,然後將它們全部壓縮到一個zip文件夾。

    +4

    你應該第一個'new_file.close()'開始之前要郵編 – ozgur

    +1

    您可以打開zip並繼續追加 – taesu

    回答

    2

    首先,解壓後文件顯示爲空的原因是您使用後沒有關閉您的文本文件。由於您沒有關閉該文件,因此您的write實際上未提交到磁盤,因此ZipFile.write看到一個空文件。您可以使用with自動關閉文件,當你用它做,所以你從來沒有忘記.close

    with open('testing123.txt', 'w') as new_file: 
        new_file.write('this file was just added:' + str(today)) 
    

    (你也可以使用.flush()逼寫承諾,但這是不常見)。

    其次,如果要生成文件的內容編程,那麼你應該使用.writestr寫字符串而不創建磁盤上的實際文件:

    newZip = zipfile.ZipFile("test.zip", "w") 
    newZip.writestr('testing123.txt', 'this file was just added:' + str(today)) 
    newZip.close() 
    
    相關問題