นี่คือสิ่งที่ฉันใช้ในขณะนี้:
import os, shutil
path = "/volume1/Users/Transfer/"
moveto = "/volume1/Users/Drive_Transfer/"
files = os.listdir(path)
files.sort()
for f in files:
src = path+f
dst = moveto+f
shutil.move(src,dst)
ตอนนี้ทำงานได้อย่างสมบูรณ์ หวังว่านี่จะช่วยคุณได้
แก้ไข:
ฉันได้เปลี่ยนสิ่งนี้เป็นฟังก์ชั่นที่ยอมรับไดเรกทอรีต้นทางและปลายทางทำให้โฟลเดอร์ปลายทางหากไม่มีอยู่และย้ายไฟล์ อนุญาตให้กรองไฟล์ src เช่นถ้าคุณต้องการย้ายรูปภาพเท่านั้นจากนั้นคุณใช้รูปแบบ'*.jpg'
ตามค่าเริ่มต้นมันจะย้ายทุกอย่างในไดเรกทอรี
import os, shutil, pathlib, fnmatch
def move_dir(src: str, dst: str, pattern: str = '*'):
if not os.path.isdir(dst):
pathlib.Path(dst).mkdir(parents=True, exist_ok=True)
for f in fnmatch.filter(os.listdir(src), pattern):
shutil.move(os.path.join(src, f), os.path.join(dst, f))
mv
pythonshutil.move
มีเคสแบบขอบหนึ่งอันที่shutil.move
ฟังก์ชันแตกต่างกัน ไปที่นี่สำหรับเต็มเขียนขึ้น โดยสรุป Pythonshutil.move
จะยกข้อยกเว้น (แต่ gnu-coreutilsmv
จะไม่)เมื่อปลายทางของคุณเป็นไดเรกทอรีและไดเรกทอรีมีไฟล์ที่มีชื่อเดียวกับแหล่งที่มา (อีกครั้งสำหรับข้อมูลเพิ่มเติมดูลิงค์ที่ให้ไว้ในประโยคก่อนหน้า )