ฟังก์ชันจำนวนมากสำหรับการดำเนินการระดับสูง (high level operations) บนไฟล์และไดเรกทอรีถูกกำหนดในโมดูล shutil ของไลบรารีมาตรฐาน Python
copy()
ฟังก์ชันนี้คัดลอกไฟล์ไปยังไฟล์ที่ระบุในไดเรกทอรีเดียวกันหรืออื่นๆ พารามิเตอร์แรกของฟังก์ชันคือการแทนสตริงของไฟล์ที่มีอยู่ พารามิเตอร์ที่สองเป็นชื่อไฟล์ผลลัพธ์หรือไดเรกทอรี หากเป็นไดเรกทอรี ไฟล์จะถูกคัดลอกเข้าไปด้วยชื่อเดียวกัน เมตาดาต้าของไฟล์ต้นฉบับไม่ถูกเก็บรักษา
>>> import shutil
>>> shutil.copy("hello.py", "newdir/")
'newdir/hello.py'
copy2()
ฟังก์ชันนี้คล้ายกับ copy() ยกเว้นว่ามันเก็บรักษาเมตาดาต้าของไฟล์ต้นทาง ตัวอย่างคุณสมบัติ date modified ของไฟล์ผลลัพธ์จะคล้ายกับไฟล์ต้นฉบับ:
>>> shutil.copy2('person.py', 'newdir/')
'newdir/person.py'
copyfile()
อาร์กิวเมนต์สตริง 2 ตัวของฟังก์ชันนี้แทนชื่อไฟล์ หมายความว่าไฟล์ต้นฉบับถูกคัดลอกด้วยชื่อที่ระบุในไดเรกทอรีเดียวกัน:
>>> shutil.copyfile('start.py', 'end.py')
'end.py'
copyfileobj()
พารามิเตอร์ของฟังก์ชันนี้เป็นอ็อบเจ็กต์ไฟล์แทนที่จะเป็นสตริงที่แทนไฟล์ อ็อบเจ็กต์ไฟล์ได้มาจากฟังก์ชัน open() ไฟล์ต้นฉบับควรมีสิทธิ์อ่าน และไฟล์ผลลัพธ์ควรเปิดด้วยสิทธิ์เขียน:
>>> f1 = open('hello.py', 'r')
>>> f2 = open('python.py', 'w')
>>> shutil.copyfileobj('f1', 'f2')
>>> shutil.copyfileobj(f1, f2)
move()
ฟังก์ชันนี้ย้ายไฟล์และไดเรกทอรีแบบ recursive จากไดเรกทอรีหนึ่งไปอีกไดเรกทอรี:
>>> shutil.move('hello.py', 'newdir/')
'newdir/hello.py'
copytree()
ฟังก์ชันนี้คัดลอกไฟล์และไดเรกทอรีย่อยในไดเรกทอรีหนึ่งไปยังอีกไดเรกทอรีอย่าง recursive ชื่อของพารามิเตอร์ทั้งสองต้องเป็นสตริง ไดเรกทอรีของชื่อพารามิเตอร์ที่สองไม่ควรมีอยู่ก่อนหน้านี้ ฟังก์ชัน copy2() ถูกใช้ภายในสำหรับคัดลอกไฟล์แต่ละไฟล์:
>>> shutil.copytree('dir1', 'dir2')
'dir2'
rmtree()
ฟังก์ชันนี้ลบไฟล์และไดเรกทอรีย่อยในไดเรกทอรีที่ระบุ:
>>> shutil.rmtree('dir2')
>>> shutil.move('hello.py', 'newdir/')
'newdir/hello.py'
disk_usage()
ฟังก์ชันนี้ดึงสถิติการใช้งานของไดเรกทอรีที่ให้มา:
>>> shutil.disk_usage('c:\\python36\\dir1')
usage(total=245681352704, used=84932993024, free=160748359680)
which()
ฟังก์ชันนี้คืนค่าเส้นทางไปยังไฟล์ที่รันได้ (executable):
>>> shutil.which('calc')
'C:\\WINDOWS\\system32\\calc.EXE'
make_archive()
ฟังก์ชันนี้สร้างไฟล์เก็บถาวร (zip หรือ tar) ของไฟล์ในไดเรกทอรีราก:
>>> root_dir = 'newdir'
>>> shutil.make_archive("newdirarch", "zip", root_dir)
'C:\\python36\\newdirarch.zip'
get_archive_formats()
ฟังก์ชันนี้ให้รายการของรูปแบบไฟล์เก็บถาวรที่รองรับทั้งหมด:
>>> shutil.get_archive_formats()
[('bztar', "bzip2'ed tar-file"), ('gztar', "gzip'ed tar-file"), ('tar', 'uncompressed tar file'), ('xztar', "xz'ed tar-file"), ('zip', 'ZIP file')]
unpack_archive()
ฟังก์ชันนี้แยกไฟล์ในไฟล์เก็บถาวรที่ให้มา พารามิเตอร์ที่สองคือไดเรกทอรีที่จะแยกไฟล์ หากไม่ให้ จะแยกในไดเรกทอรีปัจจุบัน:
>>> shutil.unpack_archive('newdirarch.zip', 'newdir')