Python 创建if文件名为.png运行循环,if.jpg忽略循环

Python 创建if文件名为.png运行循环,if.jpg忽略循环,python,Python,我正在尝试以特定的图像形状生成单词云。JPG不需要转换;然而,PNG确实如此。我想写一行,如果加载的图像是PNG,运行转换代码,如果是JPG,忽略转换代码 我不太熟悉python和编码,所以我不知道它将如何实现,但我的想法是它看起来像: if heart_mask=np.array(Image.open("filename.png")) then #runs rest of transformation code if heart_mask=np.array(Image.open(

我正在尝试以特定的图像形状生成单词云。JPG不需要转换;然而,PNG确实如此。我想写一行,如果加载的图像是PNG,运行转换代码,如果是JPG,忽略转换代码

我不太熟悉python和编码,所以我不知道它将如何实现,但我的想法是它看起来像:

if  heart_mask=np.array(Image.open("filename.png")) 
    then #runs rest of transformation code 
if heart_mask=np.array(Image.open("filename.jpg"))
    then #runs rest of generation code
这是我正在运行的实际代码:

import os

from os import path
import numpy as np
from PIL import Image
from wordcloud import WordCloud, STOPWORDS

#d=path.dirname(_file_) if "_file_" in locals() else os.getcwd()
os.chdir('C:/Users/Sams PC/Desktop/Word_Cloud_Scripts/Dmitrys Papers/Word_Cloud_Dmitry')
Document=open('Dmitry_all_lower.txt', 'r', encoding='utf-8')
text=Document.read()

heart_mask=np.array(Image.open("PCNA.png"))
heart_mask=heart_mask.reshape((heart_mask.shape[0],-1), order= 'F')
def transform_format(val):
    if val==0:
            return 255
    else:
            return val

transformed_heart_mask = np.ndarray((heart_mask.shape[0],heart_mask.shape[1]), np.int32)
print ('Transforming Image')
for i in range(len(heart_mask)):
    transformed_heart_mask[i]=list(map(transform_format, heart_mask[i]))

stopwords=set(STOPWORDS)
print ('Transformation Done')
stopwords.update(["will", "us","protein","residue", "interaction","residues","using","proteins"])
wc= WordCloud(stopwords=stopwords, background_color="white",max_words=1000, mask=heart_mask, contour_width=3, contour_color='black')
print ('Generating Word Cloud')

wc.generate(text)
注释部分有一个字符限制,因此我无法正确发布整个修改后的代码,因此我在这里进行了修改:

heart_mask=np.array(Image.open("nmr.jpg"))
split= str('nmr.jpg').rsplit('.')
extension=split[len(split)-1]
if extension == "png":
    heart_mask=heart_mask.reshape((heart_mask.shape[0],-1), order= 'F')
    def transform_format(val):
            if val==0:
                return 255
            else:
                return val
    transformed_heart_mask = np.ndarray((heart_mask.shape[0],heart_mask.shape[1]), np.int32)
    for i in range(len(heart_mask)):
            transformed_heart_mask[i]=list(map(transform_format, heart_mask[i]))
    else:
        continue
print(transformed_heart_mask)

stopwords=set(STOPWORDS)
print ('Transformation Done')
如上所述,这会产生以下错误:

SyntaxError: 'continue' not properly in loop
此外,我转换的心面具不再是通过将其放入该循环来定义的


修正了这个愚蠢的错误,我没有意识到我在使用一个jpg文件,所以它当然没有运行我的掩码转换(因此它没有被定义)。我还将continue改为simply print(“”),因此它不运行任何东西,如果它是jpg,则跳过循环。谢谢大家!

您可以从最后一个
中拆分并获取最新的零件。这必须给出文件的扩展名,所以如果它等于
jpg
,我们将继续

splitted = str(filename.lower()).rsplit('.')
extension = splitted[len(x)-1]
if extension == "png":
    # do work
else:
    continue

我想我在这里得到了这个想法,但似乎无法让它发挥作用。以下是我目前拥有的:
heart\u mask=np.array(Image.open(“nmr.jpg”))split=str('nmr.jpg')。rsplit('.')extension=split[len(split)-1]如果extension==“png”):heart\u mask=heart\u mask。重塑((heart\u mask.shape[0],-1),order='F')def)def转换格式(val):。。。。else:continue stopwords=..
所以我理解split现在意味着extension==无论文件类型是什么(png还是jpg),但是我得到的错误是continue“not property in loop”。此外,我的变形面具不再被定义为Nevermind,犯了一个愚蠢的错误并解决了它。我仍然无法修复continue错误,但我只是将其更改为else:print(“”),如果它是jpg,这将跳过转换循环,再次感谢!抱歉,我没有看到您的评论问题。不客气:)。如果我的回答对您有所帮助,您可以将其标记为已接受的答案。我确实这样做了,但它说,声誉低于15的人所投的票不会公开发布。您试图投票:)。声誉低于15的用户不能投票。作为提问者,当一个人很好地回答了你的问题时,你会“接受”这个答案。你看到投票符号下面有记号吗?您需要单击它才能接受答案:)您可以回答自己的问题。