本文目录导读:

我来为您生成一个随机文件名列表生成器脚本,这里有几种不同的版本,您可以根据需要选择:
Python 版本(功能最全)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
随机文件名列表生成器
支持自定义文件类型、数量、命名规则
"""
import random
import string
import os
from datetime import datetime
class RandomFilenameGenerator:
def __init__(self):
self.prefixes = ['file', 'doc', 'photo', 'video', 'data', 'backup',
'temp', 'archive', 'project', 'report', 'test', 'config']
self.middle_parts = ['2024', '2025', 'backup', 'final', 'draft',
'v1', 'v2', 'new', 'old', 'updated']
self.extensions = ['.txt', '.doc', '.pdf', '.jpg', '.png', '.mp4',
'.xlsx', '.csv', '.zip', '.mp3', '.html', '.py']
def generate_random_string(self, length=8):
"""生成随机字符串"""
chars = string.ascii_lowercase + string.digits
return ''.join(random.choice(chars) for _ in range(length))
def generate_with_timestamp(self, ext='.txt'):
"""使用时间戳生成文件名"""
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S_%f')[:-3]
return f"file_{timestamp}{ext}"
def generate_with_random_words(self, ext='.txt'):
"""使用随机单词组合生成文件名"""
prefix = random.choice(self.prefixes)
middle = random.choice(self.middle_parts)
random_suffix = self.generate_random_string(4)
return f"{prefix}_{middle}_{random_suffix}{ext}"
def generate_with_uuid(self, ext='.txt'):
"""使用UUID生成文件名"""
import uuid
return f"{uuid.uuid4().hex[:12]}{ext}"
def generate_batch(self, count=10, method='random_words', ext='auto'):
"""批量生成文件名
Args:
count: 生成数量
method: 生成方法 (random_words/timestamp/uuid/custom)
ext: 文件扩展名 ('auto'随机, 或指定如'.txt')
"""
filenames = []
for _ in range(count):
if ext == 'auto':
ext_choice = random.choice(self.extensions)
else:
ext_choice = ext
if method == 'timestamp':
filename = self.generate_with_timestamp(ext_choice)
elif method == 'uuid':
filename = self.generate_with_uuid(ext_choice)
elif method == 'custom':
# 自定义格式
filename = f"{random.choice(self.prefixes)}_{self.generate_random_string(6)}{ext_choice}"
else: # random_words
filename = self.generate_with_random_words(ext_choice)
filenames.append(filename)
return filenames
def main():
"""主函数:命令行交互"""
print("="*50)
print("随机文件名生成器")
print("="*50)
# 创建生成器实例
generator = RandomFilenameGenerator()
# 获取用户输入
try:
count = int(input("请输入要生成的文件名数量 (默认10): ") or "10")
method = input("选择生成方式 [1-随机单词/2-时间戳/3-UUID/4-混合]: ") or "1"
ext_input = input("文件扩展名 (直接回车随机, 或输入如.txt): ") or "auto"
# 转换方法
method_map = {
"1": "random_words",
"2": "timestamp",
"3": "uuid",
"4": "random_words" # 混合模式
}
method = method_map.get(method, "random_words")
# 处理扩展名
if ext_input != "auto" and not ext_input.startswith('.'):
ext_input = f".{ext_input}"
# 生成文件名
filenames = generator.generate_batch(
count=count,
method=method,
ext=ext_input
)
# 输出结果
print(f"\n生成的 {count} 个文件名:")
print("-" * 50)
for i, filename in enumerate(filenames, 1):
print(f"{i:3d}. {filename}")
# 保存到文件
save = input("\n是否保存到文件?[y/N]: ").lower()
if save == 'y':
with open('generated_filenames.txt', 'w', encoding='utf-8') as f:
for filename in filenames:
f.write(filename + '\n')
print(f"已保存到 generated_filenames.txt")
except ValueError as e:
print(f"输入错误: {e}")
except KeyboardInterrupt:
print("\n用户中断操作")
if __name__ == "__main__":
main()
Bash 简单版本
#!/bin/bash
# 随机文件名生成脚本
# 定义文件类型
extensions=("txt" "doc" "pdf" "jpg" "png" "mp4" "zip" "pdf")
# 生成随机字符串函数
generate_random() {
echo $RANDOM | md5sum | head -c 8
}
# 主程序
echo "=== 随机文件名生成器 ==="
# 设置数量
read -p "要生成多少个文件名?(默认10): " count
count=${count:-10}
# 生成文件名
for i in $(seq 1 $count); do
# 选择随机扩展名
ext=${extensions[$((RANDOM % ${#extensions[@]}))]}
# 生成随机文件名
random_str=$(generate_random)
timestamp=$(date +%Y%m%d)
# 组合文件名
filename="file_${timestamp}_${random_str}.${ext}"
echo "$filename"
done
# 保存到文件
read -p "保存到文件?[y/N]: " save
if [[ $save == "y" || $save == "Y" ]]; then
echo "保存文件名列表"
fi
高级版本:Python 带 GUI 界面
#!/usr/bin/env python3
# 随机文件名生成器 - GUI版本
# 需要安装: pip install tkinter
import tkinter as tk
from tkinter import ttk, messagebox
import random
import string
import uuid
from datetime import datetime
class FilenameGeneratorGUI:
def __init__(self, root):
self.root = root
self.root.title("随机文件名生成器")
self.root.geometry("500x400")
# 创建界面控件
self.setup_ui()
def setup_ui(self):
# 主框架
main_frame = ttk.Frame(self.root, padding="10")
main_frame.grid(row=0, column=0, sticky=(tk.W, tk.E, tk.N, tk.S))
# 数量设置
ttk.Label(main_frame, text="生成数量:").grid(row=0, column=0, sticky=tk.W, pady=5)
self.count_var = tk.StringVar(value="10")
ttk.Entry(main_frame, textvariable=self.count_var, width=10).grid(row=0, column=1, sticky=tk.W)
# 文件类型
ttk.Label(main_frame, text="文件扩展名:").grid(row=1, column=0, sticky=tk.W, pady=5)
self.ext_var = tk.StringVar(value="txt")
ext_combo = ttk.Combobox(main_frame, textvariable=self.ext_var,
values=["txt", "doc", "pdf", "jpg", "png", "mp4", "zip"])
ext_combo.grid(row=1, column=1, sticky=tk.W)
# 生成方式
ttk.Label(main_frame, text="生成方式:").grid(row=2, column=0, sticky=tk.W, pady=5)
self.method_var = tk.StringVar(value="随机单词")
method_combo = ttk.Combobox(main_frame, textvariable=self.method_var,
values=["随机单词", "时间戳", "UUID", "随机字符"])
method_combo.grid(row=2, column=1, sticky=tk.W)
# 生成按钮
generate_btn = ttk.Button(main_frame, text="生成文件名", command=self.generate)
generate_btn.grid(row=3, column=0, columnspan=2, pady=20)
# 结果显示
ttk.Label(main_frame, text="生成结果:").grid(row=4, column=0, columnspan=2, sticky=tk.W)
self.result_text = tk.Text(main_frame, width=50, height=10)
self.result_text.grid(row=5, column=0, columnspan=2, pady=10)
# 保存按钮
save_btn = ttk.Button(main_frame, text="保存到文件", command=self.save_to_file)
save_btn.grid(row=6, column=0, columnspan=2)
def generate(self):
"""生成文件名"""
try:
count = int(self.count_var.get())
ext = self.ext_var.get()
method = self.method_var.get()
self.result_text.delete(1.0, tk.END)
for i in range(count):
if method == "随机单词":
filename = self.random_words(ext)
elif method == "时间戳":
filename = f"file_{datetime.now().strftime('%Y%m%d_%H%M%S')}_{random.randint(100,999)}.{ext}"
elif method == "UUID":
filename = f"{uuid.uuid4().hex[:12]}.{ext}"
else: # 随机字符
chars = string.ascii_lowercase + string.digits
filename = ''.join(random.choices(chars, k=8)) + f".{ext}"
self.result_text.insert(tk.END, f"{i+1}. {filename}\n")
except Exception as e:
messagebox.showerror("错误", str(e))
def random_words(self, ext):
"""生成随机单词文件名"""
prefixes = ["file", "doc", "photo", "data", "backup", "project"]
middles = ["2024", "final", "draft", "new", "v1", "update"]
suffix = ''.join(random.choices(string.ascii_lowercase + string.digits, k=4))
return f"{random.choice(prefixes)}_{random.choice(middles)}_{suffix}.{ext}"
def save_to_file(self):
"""保存结果到文件"""
content = self.result_text.get(1.0, tk.END)
if content.strip():
with open("generated_filenames.txt", "w", encoding="utf-8") as f:
f.write(content)
messagebox.showinfo("成功", "文件已保存到 generated_filenames.txt")
else:
messagebox.showwarning("警告", "没有要保存的内容")
if __name__ == "__main__":
root = tk.Tk()
app = FilenameGeneratorGUI(root)
root.mainloop()
简单命令行版本
#!/usr/bin/env python3
# 简单版本 - 一行命令生成
import random
import string
import sys
def simple_generate(count=10, ext=".txt"):
"""简单生成随机文件名"""
for i in range(count):
# 8位随机字母数字
random_name = ''.join(random.choices(string.ascii_lowercase + string.digits, k=8))
print(f"{random_name}{ext}")
if __name__ == "__main__":
# 命令行参数:数量 扩展名
args = sys.argv[1:]
count = int(args[0]) if len(args) > 0 else 10
ext = args[1] if len(args) > 1 else ".txt"
simple_generate(count, ext)
使用方法
-
Python 版本:
python3 random_names.py
-
Bash 版本:
chmod +x random_names.sh ./random_names.sh
-
GUI 版本:
python3 gui_names.py
-
简单命令行版本:
python3 simple_gen.py 20 .txt
功能特点
- ✅ 自定义生成数量
- ✅ 多种命名规则(时间戳、UUID、随机单词等)
- ✅ 支持自定义扩展名
- ✅ 保存到文件功能
- ✅ GUI版本可视化操作
您可以根据需要选择合适的版本,需要我修改某些特定功能吗?