首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python (Windows)中的拖放多个文件

Python (Windows)中的拖放多个文件
EN

Stack Overflow用户
提问于 2013-10-19 22:47:56
回答 2查看 5.8K关注 0票数 4

我开始学习Python,我现在想在Windows操作系统下创建一个文件到另一个文件的转换器(例如,从png到avi或其他文件扩展名之间)。

我编写了一个运行良好的脚本,它完成了转换过程,但我希望在功能(然后是图形)上改进它;我正在使用Tkinter和我考虑加载文件,可以将它们作为下一个转换命令的输入拖放,而不是打开一个文件夹,将文件作为“输入源”。我找到了这个主题(python drag and drop explorer files to tkinter entry widget),并以这样的方式使用它:

代码语言:javascript
运行
复制
import sys
import os
import Tkinter
from tkdnd_wrapper import TkDND
import shlex, subprocess
from subprocess import Popen, PIPE
import glob
import shutil

root = Tkinter.Tk()
dnd = TkDND(root)
entry = Tkinter.Entry()
entry.grid()

def handle(event):
    inputfilespath = event.data
    event.widget.insert(0, inputfilespath)
    filesdir = os.path.dirname(os.path.realpath(inputfilespath))
    files = glob.iglob(os.path.join(filesdir, "*.myext"))
    for inputfilespath in files:
        if os.path.isfile(inputfilespath):
            subprocess1 = subprocess.Popen([...conversion command given as list, not string...], shell=True)
            print "\n\nConversione in corso..."
            subprocess1.wait()
            subprocess1.terminate()
            print "\n\nProcesso terminato!"

dnd.bindtarget(entry, handle, 'text/uri-list')
root.mainloop()

问题:

  1. 如果文件名有一个空格,就没有转换,进程结束时甚至没有通知任何错误。"inputfilespath“希望成为我选择的所有输入文件的通用名称,而(对于我所读的)我不能(?)使用引号作为环境变量,希望包含文件名的空格.
  2. 我试图在同一个文件夹中复制不同的文件(具有相同的文件扩展名和没有空白空间),如果我在条目小部件上拖放其中的一个文件,进程就会很好地启动(这很好!),但是对于所有其他没有选择的文件,在同一个文件夹中有相同的扩展名,而如果我在条目小部件上拖放多个文件,则不会发生转换……
EN

Stack Overflow用户

发布于 2014-07-03 06:54:05

只需使用tkinter文件对话框,然后让它将文件插入到输入框中。

示例:

代码语言:javascript
运行
复制
filedialog = tkFileDialog.askopenfilenames(*options*)
entry.insert(END, filedialog)

使用StringVar的示例:

代码语言:javascript
运行
复制
entryVar = StringVar()
entry = Entry(textvariable=entryVar)
filedialog = tkFileDialog.askopenfilenames(*options*)
entryVar.set(filedialog

希望这能有所帮助!

票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19471987

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档