Python 初学者练习:移动文件或文件夹¶
在本教程中,你将学习如何在 Python 中动文件或文件夹。
移动单个文件¶
使用 shutil.move() 方法将文件从一个文件夹永久移动到另一个文件夹。
语法格式:
shutil.move(source, destination, copy_function = copy2)
source:需要移动的源文件的路径。
destination:目标文件夹的路径。
copy_function:移动文件是将文件复制到新位置并删除原文件。此参数是用于复制文件的函数,其默认值为 copy2() ,这可以是任何其他函数,如 copy()、copyfile()。
import shutil
src_path=r"C:\temp1\abc.txt"
dst_path=r"C:\temp2\abc.txt"
shutil.move(src_path,dst_path)
print("完成移动文件!")
如果目标路径存在同名文件,则文件将被覆盖。如果在移动文件时指定的目标路径不存在,将创建一个新目录。
移动文件并重命名¶
假设目标路径中已存在同名文件。在这种情况下,可以通过重命名文件来完成移动。这需要检查目标文件夹中是否存在同名文件。
import os
import shutil
src_path=r"C:\temp1\\"
dst_path=r"C:\temp2\\"
file_name='abc.txt'
# 检查目标路径是否存在同名文件
if os.path.exists(dst_path+file_name):
# 分割提取文件名和扩展名
data=os.path.splitext(file_name)
only_name=data[0]
extension=data[1]
# 设置新文件名
new_base=only_name+'_new'+extension
new_name=os.path.join(dst_path,new_base)
shutil.move(src_path+file_name,new_name)
print(f"文件已存在,重命名为{new_base}")
else:
shutil.move(src_path+file_name,dst_path+file_name)
从文件夹中移动所有文件¶
将所有文件从一个文件夹移动到另一个文件夹。使用 os.listdir()方法获取源文件夹中的所有文件。使用 for 循环遍历文件列表以获取各个文件名,使用 shutil.move()方法完成操作。
import os
import shutil
src_path=r"C:\temp1\\"
dst_path=r"C:\temp2\\"
for file_name in os.listdir(src_path):
source=src_path+file_name
destination=dst_path+file_name
if os.path.isfile(source):
shutil.move(source,destination)
print('移动:',file_name)
移动指定的多个文件¶
import shutil
src_path=r"C:\temp1\\"
dst_path=r"C:\temp2\\"
files=['abc.txt','def.txt']
for file in files:
source=src_path+file
destination=dst_path+file
shutil.move(source, destination)
print('移动:', file)
使用通配符移动匹配的文件¶
glob 模块是 Python 标准库的一部分,遵循特定模式查找文件和文件夹。可以使用通配符进行匹配,返回匹配的文件或文件夹列表。
#移动所有txt文件
import glob
import os
import shutil
src_path=r"C:\temp1\\"
dst_path=r"C:\temp2\\"
pattern = "\*.txt"
files=glob.glob(src_path+pattern)
for file in files:
file_name=os.path.basename(file)
shutil.move(file,dst_path+file_name)
print('移动:',file)
#移动文件名以a开头的所有文件
import glob
import os
import shutil
src_path=r"C:\temp1\\"
dst_path=r"C:\temp2\\"
pattern=src_path+"\\a*"
print(pattern)
for file in glob.iglob(pattern,recursive=True):
file_name=os.path.basename(file)
shutil.move(file,dst_path+file_name)
print('移动:',file)
文章创作不易,如果您喜欢这篇文章,请关注、点赞并分享给朋友。如有意见和建议,请在评论中反馈!