我是 Python 新手,我正在嘗試使用 shutil 將檔案從一個目錄移動到另一個目錄。我了解如何為一個檔案或整個目錄執行此操作,但是如果我只想移動某些檔案,我該如何執行此操作。例如,如果我有一個包含 50 個檔案的目錄,而我只想移動這 25 個檔案中的一半。有沒有辦法指定它們而不是執行
shutil.move(source, destination)
25次?
uj5u.com熱心網友回復:
指定要移動到串列等集合中的檔案,然后如果在 Python 3.4 之后,還可以使用 pathlib 的類 Path 移動檔案。
from pathlib import Path
SRC_DIR = "/src-dir"
DST_DIR = "/dst-dir"
FILES_TO_MOVE = ["file1", "file2", "file3", ..]
for file in FILES_TO_MOVE:
Path(f"{SRC_DIR}/{file}").rename(f"{DST_DIR}/{file}")
https://docs.python.org/3.4/library/pathlib.html#pathlib.Path.rename
uj5u.com熱心網友回復:
shutil.move() 將單個檔案或目錄作為引數,因此您一次不能移動多個檔案或目錄。 然而,這就是回圈的用途!
基本上,首先使用 os.listdir() 生成目錄中的檔案串列,然后回圈遍歷串列的一半,移動每個檔案,如下所示:
import os, shutil
srcPath = './oldPath/'
destPath = './newPath/'
files = os.listdir(srcPath)
for file in files[:len(files)//2]:
shutil.move(srcPath file, destPath file)
你沒有提到如果有奇數個檔案沒有平均分配怎么辦,所以我四舍五入了。您可以通過在整數除法后加 1 來四舍五入。
該代碼的一個警告,它將移動目錄中的一半專案,包括子目錄。如果您只有檔案,則不會有任何影響,但如果有,并且您不想移動子目錄,則需要先從“檔案”串列中洗掉子目錄。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/396499.html
上一篇:為什么我不能將4GB檔案復制到全新的32GBUSB3.0閃存驅動器?
下一篇:數字貨幣&數字法幣的未來
