仅移动文件而不移动目录的问题

时间:2019-05-30 19:32:57

标签: python file move shutil

尝试使用random.sample将文件从logfile_directory移动到tmp_directory(以7为块)。 如果文件夹中的文件少于7个,它将仅移动其余文件。但是,当我尝试移动少于7个文件时,由于tmp_folder试图复制到自身中而出现错误。

尝试使用glob.glob命令,但也无法正常工作。不知道我在做什么错,只是移动文件而不是文件夹。任何帮助将不胜感激。

在另一台计算机上运行相同的代码,并获得以下消息,该消息与之前将错误消息与将tmp_folder复制到其自身有关。这个文件没什么特别的,它会导致错误,所以不知道为什么我现在得到这个。

Message = [WinError 5]访问被拒绝:'c:\ securelog_test \ bdlog.txt'   来源= C:\ Users \ jarra \ source \ repos \ archive_test \ archive_test.py   堆栈跟踪:   文件“ \ archive_test.py”,第72行,在     shutil.move(路径,tmp_folder)

logfile_directory = 'c:\\securelog_test\\'
archive_folder = 'c:\\securelog_archive\\'
workfiles_folder = 'c:\\securelog_workfiles\\'
tmp_folder = 'c:\\securelog_test\\temp\\'
completed_folder = 'c:\\securelog_test\\completed\\'

#count how many files are in the log file folder
onlyfiles = [f for f in listdir(logfile_directory) if isfile(join(logfile_directory, f))]
print('-----------------')
print (len(onlyfiles))

if len(onlyfiles) > 7:
    #move 7 random files to the temp folder for archiving
    files = os.listdir(logfile_directory)
    for fileName in random.sample(files, min(len(files), 8)):
        path = os.path.join(logfile_directory, fileName)
        shutil.move(path, tmp_folder)
else:
    #if there are less than 7 files move them
    #for file in glob.glob(logfile_directory):
    #    shutil.move(file, tmp_folder)
    for fileName in os.listdir(logfile_directory):
        path = os.path.join(logfile_directory, fileName)
        shutil.move(path, tmp_folder)     

2 个答案:

答案 0 :(得分:0)

好吧,似乎该文件存在于目标文件夹中,无法覆盖它。不知道为什么最终会调查。 为了使我的生活更轻松,我将temp和完成的文件夹放入它们自己的根文件夹中,如下所示,这似乎没有任何问题。感觉这有点作弊,很想尝试解决这个问题,但是我需要继续研究程序的其他元素。

logfile_directory = 'c:\\securelog\\securelog_test\\'
archive_folder = 'c:\\securelog\\securelog_archive\\'
workfiles_folder = 'c:\\securelog\\securelog_workfiles\\'
tmp_folder = 'c:\\securelog\\temp\\'
completed_folder = 'c:\\securelog\\completed\\'

答案 1 :(得分:-2)

检查os当前目录路径,尝试在每次出现错误的迭代中打印它。