复制文件并更改

2024-09-28 01:24:34 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我打算每两次备份一次这个文件,一次最多备份30次。一旦有30个备份,该函数将删除所有备份并重新开始(再次创建30个备份,每两秒一次)。你知道吗

因为我要创建同一个文件的30个副本,所以我需要更改名称,以便python不会覆盖该文件(main0.db、main1.db、main2.db、main3.db…等等)。为了做到这一点,我创建了一个变量,该变量被附加到文件名(i)中,并在每次函数运行时增加1。你知道吗

问题是因为我必须(?)对于函数中的变量,每次运行时都会重置变量,因此创建的唯一文件是main0.db。你知道吗

有什么想法吗?你知道吗

嘿,我想每两次备份一次这个文件,最多一次备份30次。一旦有30个备份,该函数将删除所有备份并重新开始(再次创建30个备份,每两秒一次)。你知道吗

因为我要创建同一个文件的30个副本,所以我需要更改名称,以便python不会覆盖该文件(main0.db、main1.db、main2.db、main3.db…等等)。为了做到这一点,我创建了一个变量,该变量被附加到文件名(i)中,并在每次函数运行时增加1。你知道吗

问题是因为我必须(?)对于函数中的变量,每次运行时都会重置变量,因此创建的唯一文件是main0.db。你知道吗

有什么想法吗?你知道吗

import os

import glob

import threading

import shutil

def check():

 i = 0

 threading.Timer(2, check).start()

 listPath = 'C:\Users\Billy\Desktop\New folder'
 num_files = len([f for f in os.listdir(listPath)
             if os.path.isfile(os.path.join(listPath, f))])
 #counts all the files in the directory  

 if num_files < 30:
        copyPath = 'C:\Users\Billy\Desktop\New folder\main%d.db' % i 
        i + 1   
        shutil.copy2('C:\main.db', copyPath)
 else:
        files = glob.glob('C:\Users\Billy\Desktop\New folder\*')
        for f in files:
            os.remove(f)
        i = 0
 #if theres less than 30 files, creates a copy of the file, iterates filename by 1 
 #else deletes all files in that folder, resets file name iterator to 0.

 return

check()

谢谢


Tags: 文件函数inimportdboscheckfiles

热门问题