ช่วยอธิบาย Code การ zip file หน่อยครับ

ตอบกระทู้

รูปแสดงอารมณ์
:icon_plusone: :like: :plusone: :gfb: :-D :) :( :-o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: :angry: :baa: :biggrin:
รูปแสดงอารมณ์อื่นๆ

BBCode เปิด
[img] เปิด
[url] เปิด
[Smile icon] เปิด

กระทู้แนะนำ
   

มุมมองที่ขยายได้ กระทู้แนะนำ: ช่วยอธิบาย Code การ zip file หน่อยครับ

Re: ช่วยอธิบาย Code การ zip file หน่อยครับ

โดย benzas00123 » 10/01/2020 12:15 pm

ขอบคุณครับ

Re: ช่วยอธิบาย Code การ zip file หน่อยครับ

โดย jirawoot » 10/01/2020 12:10 pm

os.walk(directory) == >> จะเป็นการนำเอา directory มาทำเป็น json ผลที่ได้มาจะได้เป็น obj
สามารถศึกษาดูจาก == >> http://code.activestate.com/recipes/577879-create-a-nested-dictionary-from-oswalk/
ผลที่ได้ <generator object walk at 0x7f2a0b668780>
จากนั้น นำ obj มาวน loop โดย คำสั่ง for
ผลที่ได้เอามาจะมี 3 คือ
('test', ['test1', 'test2'], [])
('test/test1', [], ['test.py', 'zipfolder.py'])
('test/test2', [], ['test.py', 'zipfolder.py'])

ค่า 3 ค่านี้อยู่ใน root, directories, files ของ loop ด้านล่าง

for root, directories, files in os.walk(directory):

Re: ช่วยอธิบาย Code การ zip file หน่อยครับ

โดย mindphp » 10/01/2020 11:49 am

os.walk ไว้สำหรับดึงรายละเอียดไฟล์ ใน folder
โดยค่าที่ได้ออกมาจะมี 3 ตัวคือ
root,dirs,files

ช่วยอธิบาย Code การ zip file หน่อยครับ

โดย benzas00123 » 10/01/2020 11:35 am

คือตอนนี้ผมได้ทำการศึกษาเรื่องการ zip file และ Extract file ครับ โดยตอนนี้ผมกำลังศึกษาการ zip file ทั้งหมดที่อยู่ภายใน folder แล้วติดปัญหาที่ผมไม่เข้าใจ code บรรทัดตามด้านล่างนี้ครับ ว่ามันคืออะไร รู้แค่ว่ามันเอาไว้ในการ loop เช็ค file ที่อยู่ภายใน folder แต่ไม่เข้าใจกระบวนการทำงานของมันครับ

โค้ด: เลือกทั้งหมด

    for root, directories, files in os.walk(directory): 
        for filename in files: 
            # join the two strings in order to form the full filepath. 
            filepath = os.path.join(root, filename) 
            file_paths.append(filepath) 

full code

โค้ด: เลือกทั้งหมด

from zipfile import ZipFile 
import os 
  
def get_all_file_paths(directory): 
  
    # initializing empty file paths list 
    file_paths = [] 
  
    # crawling through directory and subdirectories 
    for root, directories, files in os.walk(directory): 
        for filename in files: 
            # join the two strings in order to form the full filepath. 
            filepath = os.path.join(root, filename) 
            file_paths.append(filepath) 
  
    # returning all file paths 
    return file_paths         
  
def main(): 
    # path to folder which needs to be zipped 
    directory = './python_files'
  
    # calling function to get all file paths in the directory 
    file_paths = get_all_file_paths(directory) 
  
    # printing the list of all files to be zipped 
    print('Following files will be zipped:') 
    for file_name in file_paths: 
        print(file_name) 
  
    # writing files to a zipfile 
    with ZipFile('my_python_files.zip','w') as zip: 
        # writing each file one by one 
        for file in file_paths: 
            zip.write(file) 
  
    print('All files zipped successfully!')         
  
  
if __name__ == "__main__": 
    main() 

ข้างบน