Python拖放,获取文件名

6
我有一个文件夹里面有几个光谱图。我写了一个程序,可以将洛伦兹吸收峰拟合到这些光谱图上。为此,Python脚本必须与光谱文件在同一个文件夹中,然后读取自己的路径并检测光谱文件。双击脚本后,它会将峰值拟合到文件夹中的所有光谱文件中。
现在我想稍微改进一下程序。我不想让脚本文件与测量数据放在同一个文件夹中,并且我希望其他人也能轻松使用该程序。为此,我需要一种方法,可以将光谱文件拖放到窗口或类似位置中。脚本只应读取文件的路径和文件名。我可以在我的工作脚本中实现这一点。
对于这样的程序,最好的方法是什么?

真的需要创建GUI吗?为什么不只是一个命令行脚本,其中包含传递的图形目录作为其参数之一? - Bas Swinckels
你可以使用 tkinter 来选择一个目录:https://dev59.com/EGgu5IYBdhLWcg3we3Ct - jonrsharpe
可能是重复问题:在Windows资源管理器中拖放到Python脚本 - Stevoisiak
1个回答

13

如果您不需要 GUI,根据平台的不同,我会使用 sys.argv

例如,在 Windows 中,您无法将文件拖放到 Python 脚本上,但可以将它们拖放到批处理文件上。然后从批处理文件中,您可以使用文件名作为参数来调用您的脚本。

批处理文件:

python "dropScript.py" %*
pause
%* 包含所有文件名。 dropScript.py:
import sys

file_paths = sys.argv[1:]  # the first argument is the script itself
for p in file_paths:
    print(p)

第一个参数是脚本本身,因此它被省略在file_path列表中。


太棒了,这个程序可以读取我的文件路径。有没有任何系统操作可以仅提取文件名和文件路径? - FrankTheTank
os.path.split 可以分割路径和文件名。 - BoshWash
同时,os.path.dirname() 返回路径中的目录,os.path.basename() 返回路径中的文件名。 - BoshWash
除非我没有理解你所说的细微差别,否则在Windows上,你可以将文件或文件夹拖到Python脚本上。 - User
适用于我Windows 7 python 2.7.8。这里有一篇博客文章,也建议同样的事情:http://everydayscripting.blogspot.com/2009/08/python-drag-and-drop-zip.html ...除非问题是多个文件,否则只尝试过单个文件或文件夹。 - User
显示剩余7条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接