Python写一个每20分钟对一个路径文件夹中当月建立的txt文件复制到另一个路径中,并且这段程序每天的24点停止运行,20秒后继续运行
时间: 2024-05-11 19:14:34 浏览: 13
以下是一个可能的实现:
```python
import datetime
import os
import shutil
import time
source_folder = '/path/to/source/folder'
target_folder = '/path/to/target/folder'
while True:
now = datetime.datetime.now()
if now.hour == 0:
print('Stopping program at', now)
time.sleep(20)
continue
for filename in os.listdir(source_folder):
if filename.endswith('.txt'):
file_path = os.path.join(source_folder, filename)
file_time = datetime.datetime.fromtimestamp(os.path.getctime(file_path))
if file_time.year == now.year and file_time.month == now.month:
print('Copying', file_path, 'to', target_folder)
shutil.copy2(file_path, target_folder)
print('Waiting for 20 minutes...')
time.sleep(20 * 60)
```
解释一下:
- 首先定义源文件夹和目标文件夹的路径。
- 然后进入一个死循环,每次循环先获取当前时间。如果当前时间的小时数是0,说明已经到了第二天的0点,程序需要停止运行。于是打印一条信息,然后用`time.sleep()`函数等待20秒后进入下一次循环。
- 如果当前时间不是0点,就遍历源文件夹中的所有文件,找出以`.txt`结尾且创建时间在当前月的文件。为了判断创建时间,可以用`os.path.getctime()`函数获取文件的创建时间戳,然后用`datetime.datetime.fromtimestamp()`函数将其转换为`datetime.datetime`对象,再比较年份和月份。
- 对于每一个符合要求的文件,用`shutil.copy2()`函数将其复制到目标文件夹中。同时打印一条信息。
- 最后用`time.sleep()`函数等待20分钟,进入下一次循环。