ดาวน์โหลด ตรวจสอบ และแตกไฟล์เก็บถาวรได้อย่างง่ายดาย
หากคุณมีชุดข้อมูลหรือไฟล์เก็บถาวรอื่นๆ ที่คุณต้องการให้ผู้ใช้ใช้งานได้ และตรวจสอบว่ามีเวอร์ชันล่าสุดอยู่เสมอและดาวน์โหลดอย่างถูกต้อง fastdownload
สามารถช่วยได้
ใช้ pip:
pip install fastdownload
...หรือใช้ conda:
conda install -c fastai fastdownload
สถานการณ์ที่คุณอาจต้องการใช้ fastdownload
คือเมื่อคุณมี URL อย่างน้อยหนึ่งรายการชี้ไปที่ไฟล์เก็บถาวรบางไฟล์ที่คุณต้องการเปิดให้ใช้งานได้ และคุณต้องการให้แน่ใจว่าผู้ใช้ของคุณดาวน์โหลดไฟล์เก็บถาวรเหล่านั้นอย่างถูกต้อง มีเวอร์ชันล่าสุด และทำได้ง่ายเช่นกัน มากที่สุดเท่าที่จะเป็นไปได้สำหรับพวกเขาในการเข้าถึงข้อมูลในเอกสารสำคัญเหล่านั้น
ผู้ใช้ของคุณเพียงเรียกวิธีเดียวคือ FastDownload.get
โดยส่ง URL ที่ต้องการ จากนั้น URL จะถูกดาวน์โหลดและแยกไปยังไดเร็กทอรีที่คุณเลือก เส้นทางไปยังไฟล์ที่แตกออกมาจะถูกส่งกลับ หากดาวน์โหลด URL นั้นแล้ว ระบบจะใช้ไฟล์เก็บถาวรแคชหรือเนื้อหาโดยอัตโนมัติ อย่างไรก็ตาม หากขนาดหรือแฮชของไฟล์เก็บถาวรนั้นแตกต่างจากที่ควรจะเป็น ผู้ใช้จะได้รับแจ้ง และจะมีการดาวน์โหลดเวอร์ชันใหม่
ในอนาคต คุณอาจต้องการอัปเดตข้อมูลที่เก็บถาวรของคุณอย่างน้อย 1 รายการ เมื่อคุณทำเช่นนั้น fastdownload
จะทำให้ผู้ใช้ของคุณมีเวอร์ชันล่าสุด โดยการตรวจสอบไฟล์เก็บถาวรที่ดาวน์โหลดไว้เทียบกับขนาดไฟล์และข้อมูลแฮชที่อัปเดตของคุณ
ตัวอย่างเช่น fastai
ใช้ fastdownload
เพื่อให้สามารถเข้าถึงชุดข้อมูลสำหรับการเรียนรู้เชิงลึก ผู้ใช้ fastai
สามารถดาวน์โหลดและแตกไฟล์ได้ด้วยคำสั่งเดียว โดยใช้ค่าที่ส่งคืนเพื่อเข้าถึงไฟล์ ไฟล์จะถูกวางในไดเร็กทอรีย่อยที่เหมาะสมของโฟลเดอร์ .fastai
ใน homedir ของผู้ใช้โดยอัตโนมัติ หากมีการอัปเดตชุดข้อมูล ผู้ใช้จะได้รับแจ้งในครั้งถัดไปที่ใช้ชุดข้อมูลดังกล่าว และเวอร์ชันล่าสุดจะถูกดาวน์โหลดและแยกออกมาโดยอัตโนมัติ
เมื่อผู้ใช้ของคุณดาวน์โหลดไฟล์เก็บถาวร fastdownload
จะบันทึกลงในไดเร็กทอรีโดยอัตโนมัติ ตรวจสอบว่าขนาดและแฮชตรงกันหรือไม่ และแยกเนื้อหาออก การใช้งานขั้นต่ำสำหรับการดาวน์โหลดและแตกไฟล์คือ:
จากการนำเข้า fastdownload FastDownloadd = FastDownload()path = d.get('https://...')
หลังจากนี้ path
จะมีเส้นทางซึ่งเป็นที่ตั้งของไฟล์ที่แตกออกมา ตามค่าเริ่มต้น ไฟล์เก็บถาวรจะถูกบันทึกไปที่ {base}/archive
และแยกไปที่ {base}/data
{base}
มีค่าเริ่มต้นเป็น ~/.fastdownload
หากมีไฟล์หรือโฟลเดอร์มากกว่าหนึ่งไฟล์ในรูทของไฟล์เก็บถาวรที่ดาวน์โหลด โฟลเดอร์ใหม่จะถูกสร้างขึ้นใน data
สำหรับเนื้อหา
แทนที่จะใช้ get
ให้ใช้ download
เพื่อดาวน์โหลด URL โดยไม่ต้องแตกไฟล์ หรือ extract
เพื่อแตก URL โดยไม่ต้องดาวน์โหลด (สมมติว่ามีการดาวน์โหลดไปยังไดเร็กทอรี archive
แล้ว) วิธีการทั้งหมดนี้ยอมรับพารามิเตอร์ force
ซึ่งจะดาวน์โหลด/แตกไฟล์เก็บถาวรแม้ว่าจะมีอยู่แล้วก็ตาม
คุณสามารถเปลี่ยนพาธ base
ไฟล์ archive
และพาธ data
บางส่วนหรือทั้งหมดได้โดยส่งไปที่ FastDownload
:
d = FastDownload(base='~/.mypath', archive='downloaded', data='extracted')
คุณสามารถลบไฟล์เก็บถาวรแคชและ/หรือเนื้อหาที่แยกออกมาด้วย rm
:
d.rm('https://...')
fastdownload
จะเพิ่มไฟล์ download_checks.py
ลงในโมดูล Python ของคุณซึ่งมีขนาดไฟล์และแฮชสำหรับไฟล์เก็บถาวรของคุณ ไฟล์อยู่ในไดเร็กทอรีเดียวกันกับโมดูลที่คุณเลือก เช่น:
d = ดาวน์โหลดอย่างรวดเร็ว (โมดูล=fastai.some_module)
จากนั้นใช้ update
เพื่อสร้างหรืออัปเดตขนาดและแฮชสำหรับ URL:
d.update('https://...')
ตอนนี้คุณจะพบว่ามีไฟล์ชื่อ download_checks.py
ในไดเร็กทอรีเดียวกันกับที่ fastai.some_module
ตั้งอยู่ ซึ่งมี Python dict พร้อม URL, ขนาด และแฮชสำหรับไฟล์นี้ หากคุณเคยดาวน์โหลดไฟล์นี้ไปยังเส้นทาง archive
ของคุณ ไฟล์นั้นจะถูกนำมาใช้ แทนที่จะดาวน์โหลดสำเนาใหม่ ใช้ get(force=True)
ก่อนเพื่อดาวน์โหลดสำเนาใหม่ แม้ว่าคุณจะมีสำเนานั้นอยู่ในไฟล์เก็บถาวรก็ตาม
หากมีไฟล์ชื่อ config.ini
ในไดเร็กทอรี base
ของคุณ คีย์ archive
และ data
จะถูกใช้เป็นค่าเริ่มต้นสำหรับ FastDownload
ไฟล์ควรอยู่ในรูปแบบ configparser นี่คือตัวอย่าง config.ini
:
[DEFAULT] archive = downloaded data = extracted
หากไม่มีไฟล์ ini ไฟล์นั้นจะถูกสร้างขึ้นให้คุณโดยอัตโนมัติโดยใช้รายละเอียดที่คุณส่งไปยัง FastDownload
คุณสามารถเพิ่มคู่คีย์/ค่าเพิ่มเติมลงในไฟล์กำหนดค่าที่คุณต้องการได้ เมื่อคุณเรียก FastDownload.get
pass extract_key
เพื่อใช้คีย์อื่นที่ไม่ใช่ data
ในการเลือกตำแหน่งที่จะแตกไฟล์