如何在Python中安全地将文件移动到其他目录

dffbzjpn  于 2023-02-01  发布在  Python
关注(0)|答案(2)|浏览(107)

以下内容按预期工作:

import shutil
source = "c:\\mydir\myfile.txt"
dest_dir = "c:\\newdir"
shutil.move(source,dest_dir)

然而,这也成功了。我会希望这失败。

import shutil
source = "c:\\mydir"
dest_dir = "c:\\newdir"
shutil.move(source,dest_dir)

任何能确保只移动一个文件的方法。Windows和Unix都很好。如果不行,至少Unix可以。

t5fffqht

t5fffqht1#

您可以使用pathlibpurepath.suffix来确定路径是否指向文件或目录,如下所示:

import pathlib

def points_to_file(path) -> bool:
    if pathlib.PurePath(path).suffix:
        return True
    else:
        return False
    
pathtodir = r'C:\Users\username'
pathtofile = r'C:\Users\username\filename.extension'

print (f'Does "{pathtodir}" point to a file? {points_to_file(pathtodir)}')
# Result -> Does "C:\Users\username" point to a file? False
print (f'Does "{pathtofile}" point to a file? {points_to_file(pathtofile)}')
# Result -> Does "C:\Users\username\filename.extension" point to a file? True
jdgnovmf

jdgnovmf2#

您可以定义一个自定义函数以确保source是一个文件(使用os.path.isfile函数):

from os import path

def move_file(src, dst):
    if not path.isfile(src):
        raise IsADirectoryError('Source is not a file')
    shutil.move(src, dst)

相关问题