Page 1 of 1

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

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

Code: Select all

    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

Code: Select all

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() 

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

Posted: 10/01/2020 11:49 am
by mindphp
os.walk ไว้สำหรับดึงรายละเอียดไฟล์ ใน folder
โดยค่าที่ได้ออกมาจะมี 3 ตัวคือ
root,dirs,files

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

Posted: 10/01/2020 12:10 pm
by jirawoot
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 หน่อยครับ

Posted: 10/01/2020 12:15 pm
by benzas00123
ขอบคุณครับ