-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Python 代码片段 #190
Labels
Comments
根据旧,新名称批量重命名旧,新 文件名默认以逗号分隔,也可以自定义分隔符例如 pythonimport tkinter as tk
from tkinter import filedialog, messagebox, scrolledtext
import os
class FileRenamerApp:
def __init__(self, root):
self.root = root
self.root.title("文件重命名工具")
# 旧名称-新名称映射的输入框
tk.Label(root, text="输入文件名映射(旧名,新名):").pack(pady=10)
self.text = scrolledtext.ScrolledText(root, height=15, width=60)
self.text.pack()
# 自定义分隔符输入框
tk.Label(root, text="自定义分隔符(默认为逗号):").pack(pady=10)
self.separator = tk.StringVar(value=',')
tk.Entry(root, textvariable=self.separator, width=5).pack(pady=5)
# 选择目录的按钮
self.folder_path = tk.StringVar()
tk.Label(root, text="选择目录:").pack(pady=10)
tk.Entry(root, textvariable=self.folder_path, width=50).pack(pady=5)
tk.Button(root, text="浏览", command=self.browse_directory).pack()
# 重命名文件的按钮
tk.Button(root, text="重命名文件", command=self.rename_files).pack(pady=20)
def browse_directory(self):
""" 打开文件对话框选择目录 """
folder_selected = filedialog.askdirectory()
if folder_selected:
self.folder_path.set(folder_selected)
def rename_files(self):
""" 重命名选定目录中的文件 """
directory = self.folder_path.get()
if not os.path.isdir(directory):
messagebox.showerror("错误", "请选择有效的目录")
return
# 从文本框中读取文件映射
separator = self.separator.get()
mappings = self.text.get("1.0", tk.END).strip().split("\n")
file_mappings = {}
for mapping in mappings:
if separator in mapping:
old_name, new_name = mapping.split(separator, 1)
file_mappings[old_name.strip()] = new_name.strip()
# 重命名文件
success_files = []
not_found_files = []
for old_name, new_name in file_mappings.items():
old_file = os.path.join(directory, old_name)
new_file = os.path.join(directory, new_name)
if os.path.exists(old_file):
os.rename(old_file, new_file)
success_files.append(f"{old_name} -> {new_name}")
else:
not_found_files.append(old_name)
# 显示结果
result_message = "重命名完成!\n\n"
if success_files:
result_message += "成功重命名的文件:\n" + "\n".join(success_files) + "\n\n"
if not_found_files:
result_message += "未找到的文件:\n" + "\n".join(not_found_files)
messagebox.showinfo("结果", result_message)
if __name__ == "__main__":
root = tk.Tk()
app = FileRenamerApp(root)
root.mainloop() 输入的名称格式为:旧文件名1,新文件名1 以换行分隔多组文件名,带文件格式后缀
输入的名称格式为:旧文件名1$$$新文件名1 以换行分隔多组文件名,带文件格式后缀
使用js脚本一次获取指定目录下的mp4文件名称【也包含子目录下的mp4】
const fs = require('fs').promises;
const path = require('path');
// 获取当前目录
const currentDir = process.cwd();
// 辅助函数,用于提取文件或目录名的数字前缀
function extractNumber(prefix) {
const match = prefix.match(/^\d+/);
return match ? parseInt(match[0], 10) : null;
}
// 主函数,列出并排序目录及其文件
async function listFiles(dirPath) {
try {
const entries = await fs.readdir(dirPath, { withFileTypes: true });
// 过滤并排序目录,不包含`普通话chatgpt3.5turbo`
const directories = entries
.filter(entry => entry.isDirectory() && entry.name !== '普通话chatgpt3.5turbo')
.sort((a, b) => extractNumber(a.name) - extractNumber(b.name));
for (const dir of directories) {
console.log(dir.name); // 打印目录名称
const files = await fs.readdir(path.join(dirPath, dir.name));
const mp4Files = files
.filter(file => path.extname(file).toLowerCase() === '.mp4')
.sort((a, b) => extractNumber(a) - extractNumber(b)); // 根据数字排序文件名
mp4Files.forEach(file => console.log(file)); // 打印.mp4文件名
console.log('-----'); // 目录分隔符
}
} catch (err) {
console.error('处理目录时发生错误:', err);
}
}
listFiles(currentDir);
node listsort.js 使用ChatGPT翻译英语文件名为中文
使用ChatGPT提取一级目录名
使用ChatGPT翻译英语文件名为中文
|
根据文件夹名称列表,批量创建文件夹
import os
import tkinter as tk
from tkinter import filedialog, messagebox
class DirectoryCreatorApp:
def __init__(self, root):
self.root = root
self.root.title("目录创建器")
# 创建选择目录按钮
self.select_button = tk.Button(self.root, text="选择目录", command=self.select_directory)
self.select_button.pack(pady=10)
# 创建显示选择目录的标签
self.selected_directory_label = tk.Label(self.root, text="未选择目录")
self.selected_directory_label.pack(pady=5)
# 创建目录名输入框
self.text_area = tk.Text(self.root, height=10, width=50)
self.text_area.pack(pady=10)
# 创建开始创建目录按钮
self.create_button = tk.Button(self.root, text="开始创建目录", command=self.create_directories)
self.create_button.pack(pady=10)
# 存储选择的目录路径
self.selected_directory = ""
def select_directory(self):
self.selected_directory = filedialog.askdirectory()
if self.selected_directory:
self.selected_directory_label.config(text=f"选择的目录: {self.selected_directory}")
else:
self.selected_directory_label.config(text="未选择目录")
def create_directories(self):
if not self.selected_directory:
messagebox.showerror("错误", "请先选择一个目录")
return
directory_names = self.text_area.get("1.0", tk.END).strip().split("\n")
for dir_name in directory_names:
if dir_name.strip():
dir_path = os.path.join(self.selected_directory, dir_name.strip())
os.makedirs(dir_path, exist_ok=True)
messagebox.showinfo("完成", "目录创建完成")
if __name__ == "__main__":
root = tk.Tk()
app = DirectoryCreatorApp(root)
root.mainloop() |
批量将根目录下的vtt字幕转为srt格式字幕【包含子目录下的字幕文件】
import tkinter as tk
from tkinter import filedialog, messagebox, Label, Button, Listbox, StringVar, Frame, Scrollbar
import os
import re
def convert_vtt_to_srt(vtt_data):
"""Convert VTT format to SRT format."""
try:
srt_data = ''
index = 1
vtt_data = re.sub(r'WEBVTT.*\n', '', vtt_data)
vtt_data = re.sub(r'\d{2}:\d{2}:\d{2}\.\d{3} --> \d{2}:\d{2}:\d{2}\.\d{3}',
lambda x: x.group(0).replace('.', ','), vtt_data)
for block in vtt_data.strip().split('\n\n'):
srt_data += f"{index}\n{block}\n\n"
index += 1
return srt_data.strip()
except Exception as e:
return None
def update_list(directory):
"""Update the list to show all VTT files in the directory and subdirectories."""
listbox.delete(0, tk.END)
files.clear()
for root, dirs, files_in_dir in os.walk(directory):
for file in files_in_dir:
if file.endswith('.vtt'):
full_path = os.path.join(root, file)
listbox.insert(tk.END, full_path)
files[full_path] = None # None means not yet processed
def process_directory():
"""Process all VTT files in the directory and subdirectories, converting them to SRT format."""
if not directory_var.get():
messagebox.showerror("Error", "No directory selected!")
return
total_files = len(files)
processed_files = 0
for file_path in files:
try:
with open(file_path, 'r', encoding='utf-8') as file:
vtt_data = file.read()
srt_data = convert_vtt_to_srt(vtt_data)
if srt_data:
srt_path = file_path.rsplit('.', 1)[0] + '.srt'
with open(srt_path, 'w', encoding='utf-8') as file:
file.write(srt_data)
files[file_path] = True # True means success
listbox.insert(tk.END, f"✔️ Converted: {srt_path}")
else:
raise ValueError("Conversion returned None")
except Exception as e:
files[file_path] = False # False means failure
listbox.insert(tk.END, f"❌ Failed: {file_path}")
processed_files += 1
progress_var.set(f"Progress: {int(processed_files * 100 / total_files)}%")
root.update_idletasks()
messagebox.showinfo("Conversion Complete", "All files have been processed.")
def choose_directory():
"""Let the user choose a directory and update the list."""
directory = filedialog.askdirectory()
if directory:
directory_var.set(directory)
update_list(directory)
# Create the main window
root = tk.Tk()
root.title("VTT to SRT Converter")
root.geometry("1100x900")
directory_var = StringVar()
progress_var = StringVar(value="Progress: 0%")
files = {}
# Set up directory selection and display
directory_frame = Frame(root)
directory_label = Label(directory_frame, text="Directory:")
directory_label.pack(side=tk.LEFT)
directory_entry = Label(directory_frame, textvariable=directory_var, width=50)
directory_entry.pack(side=tk.LEFT)
dir_button = Button(directory_frame, text="Browse", command=choose_directory)
dir_button.pack(side=tk.LEFT)
directory_frame.pack(pady=10)
# Set up the file list
listbox = Listbox(root, width=80, height=20)
listbox.pack(pady=10, fill=tk.BOTH, expand=True)
# Set up the scrollbar for the listbox
scrollbar = Scrollbar(root, orient='vertical', command=listbox.yview)
scrollbar.pack(side='right', fill='y')
listbox.config(yscrollcommand=scrollbar.set)
# Set up progress and operation buttons
progress_label = Label(root, textvariable=progress_var)
progress_label.pack(pady=5)
start_button = Button(root, text="Start Conversion", command=process_directory)
start_button.pack(pady=20)
root.mainloop() |
pyvideotrans 可以使用本地的原字幕和翻译后的字幕,省略音频提取,识别,翻译 阶段。这样可以防止模型的识别幻觉,字幕可以精翻。使用以上代码即可: 3-使用js脚本一次获取指定目录下的mp4文件名称【也包含子目录下的mp4】
|
renameToEnSrt
import tkinter as tk
from tkinter import filedialog, messagebox, Label, Button
import os
def rename_srt_files(directory):
"""遍历目录下的所有子目录,并重命名所有SRT文件为.en.srt格式"""
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.srt') and not file.endswith('.en.srt'):
old_path = os.path.join(root, file)
new_path = os.path.join(root, file.replace('.srt', '.en.srt'))
os.rename(old_path, new_path)
messagebox.showinfo("完成", "所有SRT文件已重命名为.en.srt格式。")
def choose_directory():
"""选择目录并重命名文件"""
directory = filedialog.askdirectory()
if directory:
rename_srt_files(directory)
# 创建主窗口
root = tk.Tk()
root.title("SRT to EN.SRT Renamer")
root.geometry("400x150")
# 设置选择目录按钮
choose_button = Button(root, text="选择目录并重命名SRT文件", command=choose_directory)
choose_button.pack(pady=20)
root.mainloop() |
renameToSrt
import tkinter as tk
from tkinter import filedialog, messagebox, Label, Button
import os
def rename_en_srt_files(directory):
"""遍历目录下的所有子目录,并重命名所有.en.srt文件为.srt格式"""
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.en.srt'):
old_path = os.path.join(root, file)
new_path = os.path.join(root, file.replace('.en.srt', '.srt'))
os.rename(old_path, new_path)
messagebox.showinfo("完成", "所有.en.srt文件已重命名为.srt格式。")
def choose_directory():
"""选择目录并重命名文件"""
directory = filedialog.askdirectory()
if directory:
rename_en_srt_files(directory)
# 创建主窗口
root = tk.Tk()
root.title("EN.SRT to SRT Renamer")
root.geometry("400x150")
# 设置选择目录按钮
choose_button = Button(root, text="选择目录并重命名EN.SRT文件", command=choose_directory)
choose_button.pack(pady=20)
root.mainloop() |
renameVttToEnSrt
import tkinter as tk
from tkinter import filedialog, messagebox, Button
import os
import shutil
def convert_vtt_to_srt(directory):
"""遍历目录下的所有子目录,并将所有VTT文件复制并重命名为.en.srt格式"""
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith('.vtt'):
old_path = os.path.join(root, file)
new_path = os.path.join(root, file.replace('.vtt', '.en.srt'))
shutil.copyfile(old_path, new_path) # 使用shutil.copyfile保留原文件
messagebox.showinfo("完成", "所有VTT文件已被复制并重命名为.en.srt格式。")
def choose_directory():
"""选择目录并开始转换过程"""
directory = filedialog.askdirectory()
if directory:
convert_vtt_to_srt(directory)
# 创建主窗口
root = tk.Tk()
root.title("VTT to EN.SRT Converter")
root.geometry("400x150")
# 设置选择目录按钮
choose_button = Button(root, text="选择目录并转换VTT文件", command=choose_directory)
choose_button.pack(pady=20)
root.mainloop() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Python 代码片段
The text was updated successfully, but these errors were encountered: