Faster OS เป็นการแทนที่โมดูล 'OS' มาตรฐานของ Python Faster OS เสนอ ฟัง ก์ชั่นที่เขียนใหม่ได้อย่างสมบูรณ์ปรับให้เหมาะสมและเร่งความเร็วได้อย่างสมบูรณ์ซึ่งแทนที่ฟังก์ชั่นในโมดูล os.path
ต้องขอบคุณระบบปฏิบัติการที่เร็วขึ้นคุณสามารถประมวลผล 1,400,000 เส้นทางในเวลาเพียงหนึ่งนาที ในขณะที่ใช้เวลา มากกว่าหนึ่งชั่วโมงด้วยโมดูล OS
# Use Faster OS to save hours of processing time!
# The only thing you need to do is write...
import faster_os as os เร็ว. ปรับให้เหมาะสม มี 0 การพึ่งพา แสงสว่าง.
ใช้ระบบปฏิบัติการที่เร็วกว่า:
MyQuickMac Neo - โปรแกรมปฏิวัติสำหรับการดูแล AI ที่ขับเคลื่อนด้วย Mac - www.ambeteco.com/myquickmac-neo
MyQuickMac Lite - โปรแกรมนวัตกรรมสำหรับการจัดการไฟล์ AI - www.ambeteco.com/myquickmac-lite
4-Organizer Ultra- โปรแกรมที่ทรงพลังในการดึงพีซี Windows ของคุณโดยอัตโนมัติขับเคลื่อนโดย AI-www.ambeteco.com/4-organizer-ultra
4-Organizer Nano- จัดวางพีซีของคุณโดยอัตโนมัติและยุติความวุ่นวายของไฟล์-www.ambeteco.com/4-organizer-nano
Wiper AI - กำลังพัฒนาเร็ว ๆ นี้
ระบบปฏิบัติการที่เร็วขึ้นเป็นเครื่องมือที่มีความเสถียรพร้อมการผลิต
โดยเฉลี่ยแล้วฟังก์ชั่นระบบปฏิบัติการที่เร็วกว่านั้น เร็วกว่าฟังก์ชั่นดั้งเดิม 1504% จากโมดูล OS
ฟังก์ชั่นที่ใช้มากที่สุด ( split , join , splitext ) โดยเฉลี่ย เร็วกว่า 1215% :
| ชื่อ | เร็วขึ้น | ระบบปฏิบัติการเร็วขึ้น: ประมวลผล 1,000,000 เส้นทาง | OS: ประมวลผล 1,000,000 เส้นทาง |
|---|---|---|---|
join | 1530% | 14 วินาที | 3 นาที 20 วินาที |
splitext | 1059% | 8 วินาที | 1 นาที 33 วินาที |
split | 1190% | 18 วินาที | 4 นาที 43 วินาที |
ผลลัพธ์มาตรฐานเต็มรูปแบบ:
| การทำงาน | จำนวนเส้นทาง | เร็วขึ้น | เวลาของระบบปฏิบัติการ | เวลาระบบปฏิบัติการที่เร็วขึ้น |
|---|---|---|---|---|
| แยก | 5500 | 1105% | 0.8109 | 0.0733 |
| แยกเป็นสัดส่วน | 5500 | 445% | 0.3849 | 0.0864 |
| บรรทัดฐาน | 5500 | 313% | 0.1608 | 0.0513 |
| เสากระโดงเรือ | 5500 | 938% | 0.5017 | 0.0535 |
| เข้าร่วม | 5,000 | 1442% | 1.4388 | 0.0997 |
| ความหลัง | 5500 | 3653% | 12.1418 | 0.3323 |
| ismount | 5500 | 3620% | 71.5931 | 1.9776 |
| Normpath | 6500 | 326% | 1.9621 | 0.6026 |
| ขยาย | 5500 | 493% | 0.1539 | 0.0312 |
| การหลบหนี | 5500 | 180% | 3.5075 | 1.9471 |
| ISABS | 5500 | 760% | 0.6911 | 0.0909 |
| ชื่อเบส | 5500 | 1217% | 0.8403 | 0.0690 |
| ชื่อ Dirname | 5500 | 1236% | 0.8473 | 0.0685 |
| สามัญสำนึก | 5,000 | 738% | 4.4296 | 0.5998 |
| คนธรรมดาสามัญ | 5,000 | 356% | 0.9480 | 0.2661 |
ผลการวัดอเนกประสงค์:
| การทำงาน | จำนวนชิ้น (แต่ละเส้นทาง 50-100) | เร็วขึ้น | เวลาระบบปฏิบัติการที่เร็วขึ้น | เวลาของระบบปฏิบัติการ |
|---|---|---|---|---|
| multi_commonpath | 1,000 | 761% | 0.1167 | 0.8886 |
| multi_commonprefix | 1,000 | 435% | 0.0491 | 0.2137 |
| multi_abspath | 4500 | 195% | 1.3105 | 2.5564 |
| multi_ismount | 4500 | 6853% | 1.2878 | 88.2588 |
| multi_expanduser | 4500 | 448% | 0.0680 | 0.3050 |
| multi_relpath | 1100 | 3772% | 0.0646 | 2.4374 |
| multi_split | 4500 | 1475% | 0.0442 | 0.6528 |
| multi_splitdrive | 4500 | 628% | 0.0476 | 0.2989 |
| multi_normcase | 4500 | 451% | 0.0298 | 0.1348 |
| multi_normpath | 1300 | 362% | 0.1194 | 0.4324 |
| multi_basename | 4500 | 1599% | 0.0423 | 0.6770 |
| multi_dirname | 4500 | 1644% | 0.0418 | 0.6888 |
| multi_isabs | 4500 | 1023% | 0.0539 | 0.5514 |
| multi_splitext | 4500 | 1282% | 0.0318 | 0.4077 |
| multi_join | 1,000 | 1418% | 0.0204 | 0.2902 |
เราขอแนะนำให้ใช้ multi-functions เมื่อ iterable ที่กำหนดมีมากกว่า 250 องค์ประกอบ สำหรับรายการขนาดเล็กการใช้ multi-functions นั้นไม่ได้ผล
# Faster OS - a drop-in replacement for the 'OS' module
# Up to 6800% faster!
import faster_os
# All 'OS' functions you need, and even more!
# 32 rewritten functions, optimized for speed and performance.
faster_os . path . join ( '/' , 'some' , 'path' )
> >> '/some/path'
faster_os . path . split ( '/some/test/path' )
> >> ( '/some/test' , 'path' )
faster_os . path . join ( 'C: \ ' , 'Windows \ System32' , 'LogFiles' )
> >> 'C: \ Windows \ System32 \ LogFiles'
faster_os . path . split ( 'C: \ Users \ User \ Desktop' )
> >> ( 'C: \ Users \ User' , 'Desktop' )
# Works both for UNIX and for Windows!
# Everything works exactly the same as in 'OS':
# -- splitext --
faster_os . path . splitext ( 'hello world \ 123.ext' )
> >> ( 'hello world \ 123' , '.ext' )
faster_os . path . splitext ( 'C: \ sample_photo.jpg' )
> >> ( 'C: \ sample_photo' , '.jpg' )
# -- splitdrive --
faster_os . path . splitdrive ( 'C: \ HELLO WORLD \ SOME PATH' )
> >> ( 'C:' , ' \ HELLO WORLD \ SOME PATH' )
faster_os . path . splitdrive ( ' \ \ machine \ mountpoint \ directory \ etc \ ' )
> >> ( ' \ \ machine \ mountpoint' , ' \ directory \ etc \ ' )
# -- normpath --
faster_os . path . normpath ( 'C: \ \ hello \ \ \ world \ \ \ ' )
> >> 'C: \ hello \ world'
faster_os . path . normpath ( 'An invalid \ \ \ path \ \ with many slashes \ \ \ \ \ \ ' )
> >> 'An invalid \ path \ with many slashes'
# -- abspath --
faster_os . path . abspath ( 'Desktop' )
> >> 'D: \ Libraries \ Desktop \ Pys \ Big \ FasterOS \ Desktop'
faster_os . path . abspath ( 'Appdata \ Local' )
> >> 'D: \ Libraries \ Desktop \ Pys \ Big \ FasterOS \ Appdata \ Local'
# -- expanduser --
faster_os . path . expanduser ( '~ \ Downloads \ file.exe' )
> >> 'C: \ Users \ Dsibe \ Downloads \ file.exe'
faster_os . path . expanduser ( '~ \ Appdata' )
> >> 'C: \ Users \ Dsibe \ Appdata'
# -- normcase --
faster_os . path . normcase ( 'C:/HELLO WORLD/SOME/PATH/' )
> >> 'c: \ hello world \ some \ path \ '
faster_os . path . normcase ( 'C:/faster-os/a-unix-path/to-windows/path' )
> >> 'c: \ faster-os \ a-unix-path \ to-windows \ path'
# -- isabs --
faster_os . path . isabs ( 'C: \ Users \ User' )
> >> True
faster_os . path . isabs ( '~ \ user' )
> >> False
faster_os . path . isabs ( '%USERPROFILE% \ hi' )
> >> False
# -- basename --
faster_os . path . basename ( 'C: \ HELLO WORLD \ SOME PATH' )
> >> 'SOME PATH'
faster_os . path . basename ( 'C: \ faster-os' )
> >> 'faster-os'
# -- dirname --
faster_os . path . dirname ( 'C: \ HELLO WORLD \ SOME PATH' )
> >> 'C: \ HELLO WORLD'
faster_os . path . dirname ( 'C: \ faster-os' )
> >> 'C: \ '
# -- commonpath --
faster_os . path . commonpath ([
'C: \ \ Common' , 'C: \ \ Common \ \ ' , 'C: \ \ Common \ \ 123' , 'C: \ \ Common \ \ Common' ,
'C: \ \ Common \ \ abtco \ \ faster_os'
])
> >> 'C: \ Common'
# -- commonprefix--
faster_os . path . commonprefix ([
'C: \ \ ' , 'C: \ \ 1 \ \ 123/123/123 \ \ 123' , 'C: \ \ hello world \ \ some path' ,
'C: \ \ hello world \ \ some path \ \ '
])
> >> 'C: \ '
# And 21 more functions...
# Also, Faster OS also offers special 'multi-functions'.
# Use them to process extra large lists, containing hundreds of thousands of elements!
multi_abspath , multi_basename , multi_commonpath , multi_commonprefix , multi_dirname , multi_expanduser , multi_isabs , multi_ismount , multi_join , multi_normcase , multi_normpath , multi_relpath , multi_split , multi_splitdrive , multi_splitext
# For example:
faster_os . multi_join ([
( 'path/to/join' , 'some path' ),
( 'path/to/join' , 'other path' ),
( 'path/to/join' , 'other path 2' ),
( 'path/to/join' , 'other path 3' ),
...
])
# We recommend using multi-functions over lists with more than 250 elements.
# Even further, Faster OS re-implements removedirs and adds remove_multiple_dirs
faster_os . removedirs ( 'C: \ This \ Path \ Will \ Be \ Deleted' ) pip install faster_os --upgrade
โคลนที่เก็บ: git clone https://github.com/American-Best-Technologies-Company/faster-os.git
เรียกใช้ python3 setup.py build_ext
เสร็จแล้ว! ตรวจสอบการติดตั้ง: import faster_os
หากอาร์กิวเมนต์ที่กำหนดถูกต้องแล้วระบบปฏิบัติการที่เร็วกว่าจะทำงานได้อย่างแน่นอนกับโมดูล OS หมายความว่าถ้าคุณใช้ระบบปฏิบัติการที่เร็วขึ้นบนเส้นทางที่ถูกต้อง มันจะทำงานได้เหมือนโมดูล OS
หากคุณจะผ่านเส้นทางที่ไม่ถูกต้องบางอย่างเป็นอาร์กิวเมนต์ไปยังฟังก์ชั่นของระบบปฏิบัติการที่เร็วขึ้นข้อยกเว้นส่วนใหญ่ที่เกิดขึ้น จะไม่ตรงกับ สิ่งที่ยกขึ้นโดยโมดูล OS
ตัวอย่างเช่นในกรณีนี้ข้อยกเว้นที่เกิดขึ้นจากระบบปฏิบัติการและระบบปฏิบัติการที่เร็วกว่านั้น เหมือนกัน :
import os
os . path . join ( 'some path' , None )
> >> TypeError : join () argument must be str , bytes , or os . PathLike object , not 'NoneType'
import faster_os
faster_os . path . join ( 'some path' , None )
> >> TypeError : sequence item 0 : expected str instance , NoneType foundแต่บางครั้งข้อยกเว้นที่เกิดขึ้น อาจแตกต่างกัน :
import os
os . path . normcase ( None )
> >> TypeError : expected str , bytes or os . PathLike object , not NoneType
import faster_os
faster_os . path . normcase ( None )
> >> AttributeError : 'NoneType' object has no attribute 'replace'เหตุผลหลักสำหรับเรื่องนี้คือเป้าหมายหลักของระบบปฏิบัติการที่เร็วขึ้น: ความเร็ว
การเพิ่มประเภทและเส้นทางการตรวจสอบความถูกต้องจะทำให้ระบบปฏิบัติการช้าลงอย่างมีนัยสำคัญ ตอนนี้ เราไม่ได้วางแผนที่จะเพิ่มการตรวจสอบประเภทใด ๆ หรือการตรวจสอบบางอย่าง ไปยังฟังก์ชั่นระบบปฏิบัติการที่เร็วขึ้น ด้วยเหตุนี้ข้อยกเว้นอาจไม่ใช่ว่ามนุษย์ที่อ่านได้หรือเข้าใจง่าย
ปัจจุบันระบบปฏิบัติการที่เร็วกว่ารองรับ str เท่านั้น การสนับสนุน bytes จะถูกเพิ่มในการอัปเดตถัดไป บางทีแม้แต่ os.PathLike Object จะได้รับการสนับสนุนในรุ่นถัดไป
Python 3
C Build Tools:
สำหรับ Windows: ติดตั้ง Visual Studio
สำหรับ UNIX: GCC (อาจติดตั้งแล้ว)
สำหรับ MacOS: ติดตั้งเครื่องมือ Xcode CMD (พิมพ์ gcc ในเทอร์มินัลเพื่อตรวจสอบว่าติดตั้ง)
ระบบปฏิบัติการที่เร็วขึ้นได้รับใบอนุญาตภายใต้ใบอนุญาตสาธารณะ Mozilla 2.0 หมายความว่าคุณสามารถใช้มันในโครงการเชิงพาณิชย์/กรรมสิทธิ์ด้วยซอร์สโค้ดปิด คุณ ไม่จำเป็นต้องเปิดเผยซอร์สโค้ด
เราขอแนะนำให้อ่านเอกสารประกอบโมดูล OS อย่างเป็นทางการเนื่องจากพฤติกรรมของระบบปฏิบัติการที่เร็วขึ้นทั้งหมด 'มิเรอร์' จากฟังก์ชั่นระบบปฏิบัติการ ด้านล่างคุณสามารถค้นหาเอกสารสั้น ๆ เกี่ยวกับฟังก์ชั่นระบบปฏิบัติการที่เร็วขึ้นทั้งหมด
faster_os.path.normpath(path: str) -> str
ทำให้เส้นทางเป็นปกติ: แทนที่ '/' ถึง '' บน windows (หรือตรงข้ามกับ UNIX) และทำการเปลี่ยนแปลงอื่น ๆ ที่เกี่ยวข้องกับ '.' และ '..'.
faster_os.path.normcase(path: str) -> str
ลดเส้นทาง ( str.lower ) และแทนที่ '/' เป็น '' บน windows (หรือตรงข้ามกับ UNIX)
faster_os.path.split(path: str) -> tuple
ส่งคืน tuple ด้วยเส้นทางที่แยกออกเป็นชื่อไดเรกทอรีและชื่อพื้นฐาน:
ตัวอย่าง: 'บาง/ตัวอย่าง/พา ธ ' -> ('บาง/ตัวอย่าง', 'พา ธ ')
faster_os.path.splitdrive(path: str) -> tuple
มีความสมเหตุสมผลบน Windows เท่านั้น: แยกเส้นทางออกเป็นไดรฟ์และเส้นทาง
ตัวอย่าง: 'C:\Windows' -> ('C:', '\Windows')
faster_os.path.isabs(path: str) -> cython.bint
ตรวจสอบว่าเส้นทางนั้นแน่นอนหรือไม่
ตัวอย่าง:
'C:\some absolute\path' -> True
'some\relative\path\' -> False
faster_os.path.join(path: str, *paths) -> str
เข้าร่วมเส้นทางที่กำหนดทั้งหมดโดยใช้ตัวคั่นแพลตฟอร์ม ('/' หรือ '')
ตัวอย่าง:
faster_os.path.('C:\', 'some', 'path') -> 'C:\some\path'
faster_os.path.splitext(path: str) -> tuple
แยกเส้นทางเข้าสู่เส้นทางและส่วนขยาย
ตัวอย่าง:
'a photo.jpg' -> ('a photo', '.jpg')
faster_os.path.basename(path: str) -> str
ส่งคืนชื่อพื้นฐานของเส้นทาง
'C:\some absolute\path' -> 'path'
faster_os.path.dirname(path: str) -> str
ส่งคืนชื่อไดเรกทอรีของเส้นทาง
'C:\some absolute\path' -> 'C:\some absolute\'
faster_os.path.ismount(path: str) -> cython.bint
ตรวจสอบว่าเส้นทางเป็นจุดติดตั้งหรือไม่
faster_os.path.expanduser(path: str) -> str
ขยาย '~' ไปยังโปรไฟล์ผู้ใช้หรือเส้นทางบ้าน
ตัวอย่าง:
'~Desktop' - > 'C: \ Users \ Desktop
'~ \ Desktop' - > 'C: \ Users \ User \ Desktop
^ ^ notice this slash faster_os.path.relpath(tail: str, root=None) -> str
คำนวณเส้นทางสัมพัทธ์ของ tail ขึ้นอยู่กับ root
หาก root ไม่ใช่ก็จะถูกกำหนดให้กับไดเรกทอรีการทำงานปัจจุบัน os.getcwd()
faster_os.path.commonprefix(paths) -> str
ค้นหาคำนำหน้าทั่วไปของเส้นทางที่กำหนด
ตัวอย่าง:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os/abc'
faster_os.path.commonpath(paths) -> str
ค้นหาเส้นทางทั่วไปของเส้นทางที่กำหนด
ตรงกันข้ามกับ Commonprefix พบเส้นทางเต็ม
ตัวอย่าง:
['faster_os/abc', 'faster_os/abcde', 'faster_os/abc123'] -> 'faster_os'
faster_os.path.abspath(path: str) -> str
พยายามที่จะได้รับเส้นทางที่แน่นอนโดยใช้ API ของระบบปฏิบัติการหรือกลับไปที่การเข้าร่วมเส้นทางด้วย CWD
faster_os.path.multi_split(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้แยกต่างหากกับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_normpath(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ NormPath กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_normcase(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้ normcase กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_splitdrive(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ splitDrive กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_isabs(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ ISABs กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_join(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้เข้าร่วมกับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_splitext(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้ splitext กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_basename(paths) -> list
ใช้ iterable ใด ๆ (รายการ tuple ฯลฯ ) และใช้ basename กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_dirname(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้ Dirname กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_relpath(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ relpath กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_expanduser(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้ ExpandUser กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_ismount(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ ismount กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_abspath(paths) -> list
ใช้เวลา iterable (รายการ tuple ฯลฯ ) และใช้ abspath กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_commonprefix(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ CommonPrefix กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.path.multi_commonpath(paths) -> list
ใช้เวลา iterable (รายการ, tuple, ฯลฯ ) และใช้ CommonPath กับแต่ละองค์ประกอบ
ส่งคืนรายการ
faster_os.removedirs(path) -> None
ลบส่วนประกอบพา ธ ทั้งหมดจนกว่าจะมีการยกข้อยกเว้น
removedirs จะพยายามลบแต่ละไดเรกทอรีจนกว่าจะมีข้อผิดพลาดยกตัวอย่างเช่นไดเรกทอรีไม่ว่างเปล่าหรือมีข้อผิดพลาดในการอนุญาต: ตัวอย่างเช่น:
Given path "C:UsersUserDesktopmany f oldershere"
Delete "C:UsersUserDesktopmany f oldershere"
Delete "C:UsersUserDesktopmany f olders"
Delete "C:UsersUserDesktopmany"
Delete "C:UsersUserDesktop " -> ERROR - return faster_os.remove_multiple_dirs(paths) -> None
ใช้ iterable ใด ๆ (รายการ tuple ฯลฯ ) และใช้ removedirs กับแต่ละองค์ประกอบ