用脚本生成随机文件名列表

wen 实用脚本 1

本文目录导读:

用脚本生成随机文件名列表

  1. Python 版本(功能最全)
  2. Bash 简单版本
  3. 高级版本:Python 带 GUI 界面
  4. 简单命令行版本
  5. 使用方法
  6. 功能特点

我来为您生成一个随机文件名列表生成器脚本,这里有几种不同的版本,您可以根据需要选择:

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)

使用方法

  1. Python 版本

    python3 random_names.py
  2. Bash 版本

    chmod +x random_names.sh
    ./random_names.sh
  3. GUI 版本

    python3 gui_names.py
  4. 简单命令行版本

    python3 simple_gen.py 20 .txt

功能特点

  • ✅ 自定义生成数量
  • ✅ 多种命名规则(时间戳、UUID、随机单词等)
  • ✅ 支持自定义扩展名
  • ✅ 保存到文件功能
  • ✅ GUI版本可视化操作

您可以根据需要选择合适的版本,需要我修改某些特定功能吗?

抱歉,评论功能暂时关闭!