Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การย้ายไฟล์ใน Python: คู่มือฉบับสมบูรณ์

เมธอด shutil.move() ใน Python ย้ายไฟล์ไปยังตำแหน่งอื่นบนคอมพิวเตอร์ของคุณ เมธอดนี้เป็นส่วนของโมดูล shutil ซึ่งคุณต้อง import ก่อนใช้งานเมธอดนี้

การย้ายไฟล์เป็นการดำเนินการทั่วไปในโปรแกรม Python ตัวอย่างเช่น สมมติคุณสร้างโปรแกรมที่สร้างไฟล์ คุณอาจต้องการย้ายไฟล์ที่มีอยู่ทั้งหมดจากโฟลเดอร์หนึ่งไปอีกที่หนึ่ง เพื่อทำพื้นที่สำหรับไฟล์ใหม่ที่ต้องการสร้าง

นี่คือที่มาของฟังก์ชัน shutil.move() ฟังก์ชัน shutil.move() ช่วยให้คุณย้ายไฟล์จากโฟลเดอร์หนึ่งไปอีกโฟลเดอร์หนึ่งบนระบบของคุณ บทช่วยสอนนี้จะอธิบายพร้อมตัวอย่าง วิธีใช้ฟังก์ชัน shutil.move() เพื่อย้ายโค้ดของคุณ

โมดูล shutil ใน Python

โมดูล shutil 提供高層文件操作的广泛功能 与 os 库不同,shutil 附带可在文件集合上执行的函数。

ในบทช่วยสอนนี้ เราจะเน้นที่ฟังก์ชัน shutil.move() ซึ่งช่วยให้เราย้ายไฟล์โดยใช้ Python

ก่อนจะสำรวจฟังก์ชัน move() เราต้อง import ไลบรารี shutil เข้ามาในโค้ดก่อน ทำได้ด้วยคำสั่ง import ใน Python:

import shutil

การย้ายไฟล์ใน Python

ฟังก์ชัน shutil.move() ย้ายไฟล์บนคอมพิวเตอร์ของคุณ เมธอดนี้รับ file path ของไฟล์ที่ต้องการย้าย และ file path ใหม่เป็นอาร์กิวเมนต์

ไวยากรณ์ของฟังก์ชันนี้:

81% ของผู้เข้าร่วมระบุว่ามีความมั่นใจมากขึ้นในโอกาสทางอาชีพด้านเทคโนโลยีหลังจากเข้าร่วมบูตแคมป์ ติดต่อเพื่อหาบูตแคมป์ที่เหมาะกับคุณวันนี้

นักเรียนบูตแคมป์เฉลี่ยใช้เวลาน้อยกว่า 6 เดือนในการเปลี่ยนสายอาชีพ ตั้งแต่เริ่มเรียนจนหางานแรกได้

shutil.move(source, destination)

shutil.move() รับ 2 พารามิเตอร์ คือ:

  • source path: file path ของไฟล์ที่ต้องการย้าย
  • destination path: file path ที่ต้องการย้ายไฟล์ไป

ฟังก์ชัน move() คืนค่า path ของไฟล์ที่คุณย้าย

ถ้า destination ตรงกับไฟล์ที่มีอยู่แล้ว ไฟล์เดิมจะถูกเขียนทับ

File path ที่คุณระบุ สามารถเป็น absolute หรือ relative ได้

Absolute file path เป็น path เต็มที่นำไปยังไฟล์โดยตรง (เช่น /home/career_karma/file.txt) Relative file path หมายถึงตำแหน่งที่สัมพันธ์กับไดเรกทอรีที่โปรแกรม Python ของคุณกำลังรันอยู่ (เช่น file.txt)

ถ้าคุณระบุ destination directory ที่ไม่มีอยู่จริง ไดเรกทอรีใหม่จะถูกสร้างขึ้น

ไลบรารี os มีเมธอด os.rename() ซึ่งมักใช้เปลี่ยนชื่อไฟล์ เมธอดนี้ยังย้ายไฟล์ได้อีกด้วย แต่เมธอด shutil ออกแบบมาโดยเฉพาะสำหรับย้ายไฟล์ ไวยากรณ์ shutil.move() เข้าใจง่ายกว่า os.rename() หากคุณกำลังย้ายไฟล์

ตัวอย่างการย้ายไฟล์ใน Python

มาสำรวจตัวอย่างการใช้ฟังก์ชัน shutil.move() กัน

ย้ายไฟล์เดียว

สมมติเรามีไฟล์ชื่อ raw_data.csv ที่ต้องการย้ายเข้าไปในไดเรกทอรีชื่อ data ใน current working directory ของเรา ทำได้ด้วยโค้ดนี้:

import shutil
source = "raw_data.csv"
destination = "data"
new_path = shutil.move(source, destination)
print(new_path)

โค้ดคืนค่า:

data/raw_data.csv

ก่อนอื่น เรา import ไลบรารี shutil ต่อมา ประกาศตัวแปร Python 2 ตัว ตัวแปร source เก็บชื่อไฟล์ที่ต้องการย้าย ตัวแปร destination เก็บชื่อไดเรกทอรีที่ต้องการย้ายไฟล์ไป

ในตัวอย่างนี้ เราระบุ relative file path สำหรับ source และ destination หมายความว่า ไฟล์ raw_data.csv และไดเรกทอรี data หมายถึงไฟล์และไดเรกทอรีในไดเรกทอรีเดียวกับไฟล์ Python ของเรา ถ้าไฟล์ Python ของเราอยู่ใน /home/career_karma/program ไฟล์และไดเรกทอรีที่เราอ้างอิงจะเป็นของในไดเรกทอรีนั้น

ต่อมา เราใช้ shutil.move() ย้ายไฟล์ของเรา มอบหมายผลลัพธ์ของการดำเนินการ — path ของไฟล์ที่ย้ายแล้ว — ให้ตัวแปร new_path ต่อมา พิมพ์ค่าของ new_path ซึ่งคืนค่า path ของไฟล์ใหม่ของเรา

เราย้ายไฟล์ใน Python สำเร็จแล้ว

หมายเหตุ: ไวยากรณ์เดียวกันที่เราใช้ย้ายไฟล์ สามารถใช้ย้ายโฟลเดอร์ได้เช่นกัน

ย้ายไฟล์และเปลี่ยนชื่อ

ฟังก์ชัน shutil.move() อนุญาตให้คุณเปลี่ยนชื่อไฟล์หลังจากย้ายแล้ว

สมมติเราต้องการย้าย raw_data.csv เข้าไปในโฟลเดอร์ชื่อ data และเปลี่ยนชื่อไฟล์เป็น raw_data_2019.csv ทำได้ด้วยโค้ดนี้:

import shutil
source = "raw_data.csv"
destination = "data/raw_data_2019.csv"
new_path = shutil.move(source, destination)
print(new_path)

โค้ดคืนค่า:

data/raw_data_2019.csv

เมื่อเราระบุ destination สำหรับไฟล์ใหม่ เราก็ระบุชื่อใหม่สำหรับไฟล์ด้วย เราระบุ destination เป็น data/raw_data_2019.csv หมายความว่าเมื่อไฟล์ถูกย้าย จะถูกย้ายเข้าไปในไดเรกทอรี data ไฟล์ใหม่จะได้ชื่อ raw_data_2019.csv

ย้ายหลายไฟล์

เรายังสามารถใช้ฟังก์ชัน shutil.move() ย้ายหลายไฟล์ได้ เพื่อทำเช่นนี้ เราจะอ้างอิงไลบรารี os ด้วย เราสามารถใช้เมธอด os.listdir() เพื่อดึงลิสต์ไฟล์ในไดเรกทอรี

สมมติเราต้องการย้ายไฟล์ทั้งหมดในไดเรกทอรี /home/career_karma/data ไปยังไดเรกทอรีใหม่ชื่อ /home/career_karma/old_data ไดเรกทอรี data มีไฟล์ดังนี้:

  • /home/career_karma/data/data.csv
  • /home/career_karma/data/old_data.csv

ทำได้ด้วยโค้ดนี้:

import shutil
import os
source = "/home/career_karma/data"
destination = "/home/career_karma/old_data"
files = os.listdir(source)
for file in files:
    new_path = shutil.move(f"{source}/{file}", destination)
    print(new_path)

โค้ดคืนค่า:

/home/career_karma/old_data/data.csv
/home/career_karma/old_data/old_data.csv

มาวิเคราะห์โค้ด: ก่อนอื่น import ไลบรารี shutil และ os เข้าโปรแกรม จากนั้นระบุ absolute path สำหรับโฟลเดอร์ที่ต้องการย้ายเนื้อหา และระบุ path สำหรับ destination ที่จะย้ายเนื้อหาโฟลเดอร์ไป

ต่อมา ใช้ os.listdir() ดึงลิสต์ไฟล์ทั้งหมดในโฟลเดอร์ที่ต้องการย้ายเนื้อหา ใช้ลูป for ใน Python iterate ผ่านแต่ละไฟล์ จากนั้นใช้ shutil.move() ย้ายแต่ละไฟล์ไปยังโฟลเดอร์ destination ของเรา

ในฟังก์ชัน move() เราใช้ f-string ระบุ full file path สำหรับไฟล์ที่ต้องการย้าย โค้ดแสดง file path ของไฟล์ที่ย้ายแล้ว

สรุป

ฟังก์ชัน shutil.move() ย้ายไฟล์จากตำแหน่งหนึ่งไปอีกตำแหน่งหนึ่งบนคอมพิวเตอร์ของคุณ คุณต้องระบุ path ของไฟล์ที่ต้องการย้าย รวมถึง path ใหม่สำหรับไฟล์

ต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนโค้ดใน Python? ดูคู่มือ How to Learn Python ของเรา คุณจะพบคำแนะนำจากผู้เชี่ยวชาญเกี่ยวกับวิธีเรียน Python ในคู่มือนี้ คู่มือของเรายังมีรายการแหล่งเรียนรู้ชั้นนำช่วยขยายความรู้ของคุณ