Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用PIL显示图像而不添加文件格式_Python_Image Processing_Python Imaging Library - Fatal编程技术网

Python 使用PIL显示图像而不添加文件格式

Python 使用PIL显示图像而不添加文件格式,python,image-processing,python-imaging-library,Python,Image Processing,Python Imaging Library,我写了一个函数,可以搜索文件夹,如果文件存在,可以在新窗口中显示图片,但我总是要添加图像文件格式或扩展名,然后该函数才能工作 是否有一种方法可以避免忽略扩展名,如.gif或.png 如果文件名为spam.gif,则该文件名为spam.gif,因此不能将其作为垃圾邮件打开。是的,Windows资源管理器试图对您隐藏这一点,但仅在有限的范围内,如果您想做同样的事情,您必须做同样的事情Windows资源管理器 如果您希望用户能够键入垃圾邮件,并且您的程序能够自动打开spam.gif或spam.jpg或

我写了一个函数,可以搜索文件夹,如果文件存在,可以在新窗口中显示图片,但我总是要添加图像文件格式或扩展名,然后该函数才能工作

是否有一种方法可以避免忽略扩展名,如.gif或.png

如果文件名为spam.gif,则该文件名为spam.gif,因此不能将其作为垃圾邮件打开。是的,Windows资源管理器试图对您隐藏这一点,但仅在有限的范围内,如果您想做同样的事情,您必须做同样的事情Windows资源管理器

如果您希望用户能够键入垃圾邮件,并且您的程序能够自动打开spam.gif或spam.jpg或spam.png,则需要显式查找与所需模式匹配的文件。如果发现两个这样的文件,或者一个名为spam.txt的文件根本不是图像,或者

最简单的版本是尝试打开第一个垃圾邮件。*您发现的是:

def open_image_file(path, name):
    for fullname in os.listdir(path):
        if fnmatch.fnmatch(f, name + '.*'):
            return PhotoImage(file=os.path.join(path, fullname))
现在您可以执行以下操作:

logo = open_image_file(r'C:\Python34', e.get())

如果未找到名为spam.*的文件,则最终将不会找到任何文件。比如说,如果发现一个文本文件或可执行文件,并且PhotoImage引发了一个异常,那么您将得到一个异常。否则,徽标将是第一个垃圾邮件*文件的照片图像。

您的意思是您不希望用户必须键入扩展名,并且希望您的程序查找所有可能的图像文件,其中任何扩展名都与用户输入的内容相匹配?请注意:缩进使用4个字符,而不是1个字符;这使得很难区分函数的一部分和函数之外的内容。特别是因为我认为你搞错了,从window=Tk到结尾的代码几乎肯定不应该出现在显示屏上。谢谢你,阿巴内特。但我似乎无法解决这个问题。你能按照我发送代码的方式重新编写代码吗?…非常感谢it@JoeyDanielDarko:如果你对某些特定的事情感到困惑,问一些具体的问题。如果您希望有人为您编写代码,这样您就不必了解它是如何工作的,那么您需要聘请顾问,而不是询问StackOverflow。
logo = open_image_file(r'C:\Python34', e.get())