import os
from shutil import move
defsort_files(directory_path):
for filename in os.listdir(directory_path):
if os.path.isfile(os.path.join(directory_path, filename)):
file_extension = filename.split('.')[-1]
destination_directory = os.path.join(directory_path, file_extension)
ifnot os.path.exists(destination_directory):
os.makedirs(destination_directory)
move(os.path.join(directory_path, filename),
os.path.join(destination_directory, filename))
# 调用函数,替换路径if __name__ == '__main__':
sort_files('your_directory_path')
说明: 函数遍历指定目录中的所有文件,提取扩展名创建对应子目录并移动文件。
1.2 移除空白的文档
清理目录下所有为空的文件夹,保持目录整洁。
import os
defremove_empty_folders(directory_path):
for root, dirs, files in os.walk(directory_path, topdown=False):
for folder in dirs:
folder_path = os.path.join(root, folder)
if os.listdir(folder_path):
os.rmdir(folder_path)
__name__ == :
remove_empty_folders()
not
if
'__main__'
'your_directory_path'
说明: 使用 os.walk 从底层向上遍历,确保删除空目录前已处理完子目录。
1.3 批量重命名文件
根据规则批量修改文件名,例如去除特定前缀或后缀。
import os
defrename_files(directory_path, old_name, new_name):
for filename in os.listdir(directory_path):
if old_name in filename:
new_filename = filename.replace(old_name, new_name)
os.rename(os.path.join(directory_path, filename),
os.path.join(directory_path, new_filename))
if __name__ == '__main__':
# 示例:将 'old_' 替换为 'new_'
rename_files('your_directory_path', 'old_', 'new_')
from PIL import Image
defcreate_thumbnail(input_path, output_path, size=(128, 128)):
image = Image.open(input_path)
image.thumbnail(size)
image.save(output_path)
if __name__ == '__main__':
create_thumbnail('input.jpg', 'thumbnail.jpg')
4. 系统任务管理
4.1 进程监控与终止
查看当前运行进程并强制结束指定名称的进程。
import psutil
defget_running_processes():
return [p.info for p in psutil.process_iter(['pid', 'name', 'username'])]
defkill_process_by_name(process_name):
for p in psutil.process_iter(['pid', 'name', 'username']):
try:
if p.info['name'] == process_name:
p.kill()
except (psutil.NoSuchProcess, psutil.AccessDenied):
passif __name__ == '__main__':
print(get_running_processes())
# kill_process_by_name('process_name_here')
5. PDF 文件操作
5.1 合并多个 PDF 文件
将多个 PDF 文件合并为一个。
import PyPDF2
defmerge_pdfs(input_paths, output_path):
pdf_merger = PyPDF2.PdfMerger()
for path in input_paths:
withopen(path, 'rb') as f:
pdf_merger.append(f)
withopen(output_path, 'wb') as f:
pdf_merger.write(f)
if __name__ == '__main__':
input_pdf_paths = ['pdf1.pdf', 'pdf2.pdf']
merge_pdfs(input_pdf_paths, 'merged.pdf')
5.2 PDF 密码保护
为 PDF 文件设置打开密码。
import PyPDF2
defadd_password_protection(input_path, output_path, password):
withopen(input_path, 'rb') as f:
pdf_reader = PyPDF2.PdfReader(f)
pdf_writer = PyPDF2.PdfWriter()
for page_num inrange(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
pdf_writer.encrypt(password)
withopen(output_path, 'wb') as output_file:
pdf_writer.write(output_file)
if __name__ == '__main__':
add_password_protection('input.pdf', 'protected.pdf', 'your_password')