在 Python 中,创建目录或生成文件路径列表通常涉及使用 os
、os.path
或 pathlib
模块。下面是一些常见的任务和方法,用于在 Python 中创建目录或获取文件路径列表。
问题背景
在初始阶段的 Python 学习过程中,可能遇到这样的问题:如何在用户输入中创建目录或文件路径的列表。由于不确定列出目录的语法,因此需要找到一种有效的方法来实现此功能。
解决方案
1、导入必要的模块
导入必要的 Python 模块,以访问文件系统和创建图形用户界面 (GUI)。
import os
from Tkinter import *
import tkMessageBox
2、创建 GUI
创建一个简单的 GUI,允许用户输入文件路径。
master = Tk()
master.geometry("600x100+700+400") # 窗口大小和位置filePath = Label(text="Enter filepath of files to convert")
filePath.pack() # 标签e = Entry(master, width=60)
e.pack() # 输入字段e.focus_set() # 设置焦点
3、定义函数来转换文件
创建一个函数来转换用户输入的文件路径中的文件。
def convert():myDirectory = e.get() # 获取用户输入的路径filepaths = '[' + e.get() + ']' # 将路径转换为列表for i in filepaths.split(","): # 将路径列表按逗号分隔filepath = i.strip() # 去除每个路径的前后空格if os.path.isdir(filepath): # 检查是否为目录filesToChange = os.listdir(filepath) # 列出目录中的文件for f in filesToChange:# 执行命令转换每个文件cmd = '/Applications/OpenImageIO/dist/macosx/bin/iconvert --inplace --scanline --compression zip -d half ' + os.path.join(filepath, f)os.system(cmd)
4、定义函数显示转换结果
创建一个函数来显示转换结果。
def happyComp():window = Tk()window.wm_withdraw()window.geometry("1x1+200+200")tkMessageBox.showerror(title="Happy Compositing!", message="Converted!", parent=window)
5、定义点击事件处理函数
创建一个函数来处理点击按钮的事件。
def click():convert()happyComp()
6、创建按钮
创建一个按钮来触发转换过程。
b = Button(master, text="convert now!!!", width=10, command=click)
b.pack()
7、启动主循环
启动 GUI 的主循环,等待用户输入并运行相应的函数。
mainloop()
完整的代码示例
import os
from Tkinter import *
import tkMessageBoxmaster = Tk()
master.geometry("600x100+700+400") # 窗口大小和位置filePath = Label(text="Enter filepath of files to convert")
filePath.pack() # 标签e = Entry(master, width=60)
e.pack() # 输入字段e.focus_set() # 设置焦点def convert():myDirectory = e.get() # 获取用户输入的路径filepaths = '[' + e.get() + ']' # 将路径转换为列表for i in filepaths.split(","): # 将路径列表按逗号分隔filepath = i.strip() # 去除每个路径的前后空格if os.path.isdir(filepath): # 检查是否为目录filesToChange = os.listdir(filepath) # 列出目录中的文件for f in filesToChange:# 执行命令转换每个文件cmd = '/Applications/OpenImageIO/dist/macosx/bin/iconvert --inplace --scanline --compression zip -d half ' + os.path.join(filepath, f)os.system(cmd)def happyComp():window = Tk()window.wm_withdraw()window.geometry("1x1+200+200")tkMessageBox.showerror(title="Happy Compositing!", message="Converted!", parent=window)def click():convert()happyComp()b = Button(master, text="convert now!!!", width=10, command=click)
b.pack()mainloop()
现在,我们可以运行此脚本,用户可以输入多个目录,用逗号分隔,脚本将遍历这些目录,转换每个目录中的文件,并在转换完成后显示结果。