要求如下:
在 12-02-练习专用 目录下操作
1. 创建三个文件夹 [‘文件夹1’, ‘文件夹2’, ‘文件夹3’]
2. 每个文件夹中随机创建 5-10个.txt 文件,文件夹名用创建时的时间戳命名(延时 0.01 秒创建一个)
3. 每个文件夹中随机创建 5-10个.py 文件,文件夹名用创建时的时间戳命名
4. 将 .txt 文件全部复制到 12-02-txt 文件 目录中(没有就自己创建)
5. 将 .py 文件全部复制到 12-02-py 文件 目录中(没有就自己创建)
主要是练习python的os模块,并使用到time,shutil 等模块。
"""
在 12-02-练习专用 目录下操作
1. 创建三个文件夹 ['文件夹1', '文件夹2', '文件夹3']
2. 每个文件夹中随机创建 5-10个.txt 文件,文件夹名用创建时的时间戳命名(延时 0.01 秒创建一个)
3. 每个文件夹中随机创建 5-10个.py 文件,文件夹名用创建时的时间戳命名
4. 将 .txt 文件全部复制到 12-02-txt 文件 目录中(没有就自己创建)
5. 将 .py 文件全部复制到 12-02-py 文件 目录中(没有就自己创建)
"""
import os
# current_dir = os.getcwd()
# print(current_dir)
# print(os.path.abspath('12-02-练习专用'))
import random
import re
import shutil
import time
target_dir = os.path.abspath('12-02-练习专用')
os.chdir(target_dir)
for i in range(1, 4):
if not os.path.exists(f'文件夹{i}'):
os.mkdir(f'文件夹{i}')
# child_dirs = os.listdir() #如果这样写,如此时除了文件夹1/2/3 外,还有别的子文件夹,此时会把这些文件夹也算进child_dirs里面,后面会产生问题
# child_dirs = '\n'.join(child_dirs)
dir_name = re.compile(r'文件夹.*') #正则表达式匹配需要用到的文件夹
result_1 = dir_name.findall('\n'.join(os.listdir())) #listdir结果为列表,join之后变为str,可以用于正则表达式匹配
child_dirs = []
child_dirs.extend(result_1)
# for child_dir in child_dirs:
# for i in range(1,4):
# if child_dir != f'文件夹{i}':
# child_dirs.pop(child_dirs.index(child_dir))
print(child_dirs)
# 随机创建文件
#file_num = random.randint(5, 10)
for child_dir in child_dirs: #如果child_dirs 还包括别的文件夹,此时所有文件夹里都会随机产生文件
if not os.listdir(child_dir): #如果子文件夹里为空,则创建文件
for i in range(random.randint(5, 10)):
filename = f'{int(time.time()) * 1000}.txt'
current_time = f'It is {time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())}'
open(os.path.join(child_dir,filename), mode = 'w', encoding='utf-8').write(current_time)
time.sleep(1)
python_file = f'{int(time.time()) * 1000}.py'
open(os.path.join(child_dir, python_file), mode='w', encoding='utf-8').write(current_time)
txt_dir = "12-02-txt"
if not os.path.exists(txt_dir):
os.mkdir(txt_dir)
py_dir = "12-02-py"
if not os.path.exists(py_dir):
os.mkdir(py_dir)
txt_dir_path = os.path.abspath(txt_dir)
py_dir_path = os.path.abspath(py_dir)
print('txt_dir is:\t', txt_dir_path)
for child_dir in child_dirs:
filename_list = os.listdir(child_dir)
print(filename_list)
child_dir = os.path.abspath(child_dir)
for file_name in filename_list:
if file_name.endswith('.txt'):
shutil.copy(os.path.join(child_dir, file_name), txt_dir_path)
if file_name.endswith('.py'):
shutil.copy(os.path.join(child_dir, file_name), py_dir_path)