Else 的语法无效:3.8
Posted
技术标签:
【中文标题】Else 的语法无效:3.8【英文标题】:Invalid syntax of Else: 3.8 【发布时间】:2020-03-30 12:03:17 【问题描述】:我是 python 脚本的新手,想知道如何修复下面的代码。我想知道如何解决Invalid Syntax of Else语句,谢谢!
import os
import zipfile
f = open("filelist.txt","w+")
path=("pathtofile")
directory=os.fsencode(path)
filenames = []
for file in os.listdir(directory):
filename = os.fsdecode(file)
if filename.endswith(".zip"):
with zipfile.ZipFile(filename, 'r') as zipObj:
contents = zipObj.namelist()
listfile = (str(contents))
remchar = "'[]"
for char in remchar:
a = listfile.replace(char,"")
f.write (a)
continue
else:
pass
f.close()
【问题讨论】:
这是您代码的实际缩进吗? 是否应该将我们的代码(如listfile
和remchar
)以及您的 for 循环缩进到我们的 if 语句中?如果不是,那么您需要将 else 移到它们上方,以便在同一缩进的 if 下一行代码之后是您的 else
if
语句在您没有缩进 listfile = ...
时结束。 else
应该属于什么?
如果您是新手,您可能希望从官方 Python 教程开始。您的else:
错误的解决方案在docs.python.org/3/tutorial/controlflow.html#if-statements - 下一次,请发布完整的回溯。一方面,它准确地告诉我们错误发生在哪一行。 (它可能会告诉我们更多信息,因此请不要省略您不了解其需要的任何内容。)
【参考方案1】:
请记住,python 中的缩进很重要。您的 else:
语句在同一级别上没有匹配的 if
语句。确保正确缩进以实现您要查找的内容:
if filename.endswith(".zip"):
with zipfile.ZipFile(filename, 'r') as zipObj:
contents = zipObj.namelist()
listfile = (str(contents))
remchar = "'[]"
for char in remchar:
a = listfile.replace(char,"")
f.write (a)
continue
else:
pass
【讨论】:
【参考方案2】:else
语句位于if
语句的末尾之外。您必须在结束另一个 else
后立即添加一个 else
。是这样的:
if filename.endswith(".zip"):
with zipfile.ZipFile(filename, 'r') as zipObj:
contents = zipObj.namelist()
else:
pass
如果你只是写pass
,那么你可以直接省略else
。
【讨论】:
以上是关于Else 的语法无效:3.8的主要内容,如果未能解决你的问题,请参考以下文章
spyder IDE 上的无效语法 (pyflakes E)
为啥我在使用带有 c# XPathNavigator Evaluate 的 Xpath if-then-else Expression 时得到一个无效的令牌?