我有一个尝试...除了我的代码中的块和抛出异常时.我真的只想继续使用代码,因为在这种情况下,一切都仍然可以正常运行.问题是如果你将except:block留空或者没有#do,它会给你一个语法错误.我不能继续使用,因为它不在循环中.是否有一个关键字,我可以使用它告诉代码继续前进?
我经常看到有关如何except: pass阻止使用的其他Stack Overflow问题的评论.为什么这么糟糕?有时我只是不在乎错误是什么,我想继续使用代码.
try:
something
except:
pass
Run Code Online (Sandbox Code Playgroud)
为什么使用except: pass块坏?是什么让它变坏?是因为我pass出错了还是我except有错误?
python error-handling exception-handling exception try-catch
我有一个主程序调用的函数:
try:
someFunction()
except:
print "exception happened!"
Run Code Online (Sandbox Code Playgroud)
但是在函数执行过程中它会引发异常,因此会跳转到该except部分.
我怎样才能确切地看到发生了什么someFunction()导致异常发生?
有时您不希望在部件中放置任何代码,except因为您只是希望确保代码运行时没有任何错误但是没有兴趣捕获它们.我可以在C#中这样做:
try
{
do_something()
}catch (...) {}
Run Code Online (Sandbox Code Playgroud)
我怎么能在Python中做到这一点?,因为缩进不允许这样做:
try:
do_something()
except:
i_must_enter_somecode_here()
Run Code Online (Sandbox Code Playgroud)
顺便说一句,也许我在C#中所做的事情也不符合错误处理原则.如果你对此有所了解,我会很感激.
使用Python 2.7和Pandas
我必须解析我的目录并绘制一堆CSV.如果CSV为空,则脚本会中断并生成错误消息:
pandas.io.common.EmptyDataError: No columns to parse from file
Run Code Online (Sandbox Code Playgroud)
如果我存储了我的文件路径
file_paths=[]
Run Code Online (Sandbox Code Playgroud)
如何阅读每一个并仅绘制非空CSV?如果我将空数据帧定义为df = [],我尝试以下代码
for i in range(0,len(file_paths)):
if pd.read_csv(file_paths[i] == ""):
print "empty"
else df.append(pd.read_csv(file_paths[i],header=None))
Run Code Online (Sandbox Code Playgroud) 我正在使用Python脚本在Abaqus中执行某些功能.现在,在运行一些迭代后,由于错误,Abaqus退出脚本.
是否有可能在Python中绕过错误并继续其他迭代?
错误消息是
#* The extrude direction must be approximately orthogonal
#* to the plane containing the edges being extruded.
Run Code Online (Sandbox Code Playgroud)
一些迭代出现错误,我正在寻找一种忽略错误的方法,并在遇到这样的错误时继续循环.
for循环是给定的;
for i in xrange(0,960):
p = mdb.models['Model-1'].parts['Part-1']
c = p.cells
pickedCells = c.getSequenceFromMask(mask=('[#1 ]', ), )
e, d1 = p.edges, p.datums
pickedEdges =(e[i], )
p.PartitionCellByExtrudeEdge(line=d1[3], cells=pickedCells, edges=pickedEdges,
sense=REVERSE)
Run Code Online (Sandbox Code Playgroud)
这可行吗?谢谢!
当尝试忽略上下文管理器执行期间引发的异常时,我有哪些选择?事实上,以下简单的上下文管理器只是传播结果,导致其结束执行,除非被捕获:
class contextMan:
def __enter__(self):
print("Entering Context")
def __exit__(self, exc_type, exc_value, traceback):
print("Exiting Context")
if __name__ == "__main__":
with contextMan():
raise IndexError
Run Code Online (Sandbox Code Playgroud)
我当然可以将它放在一个try -- except子句中,但这似乎是一种相当乏味的方法。当然,有更好的选择来解决这个问题。
假设我有以下Python代码:
x = some_product()
name = x.name
first_child = x.child_list[0]
link = x.link
id = x.id
Run Code Online (Sandbox Code Playgroud)
当x.child_list为None时,第3行可能会出现问题.这显然给了我一个TypeError,说:
'NoneType' Object has no attribute '_____getitem_____'
Run Code Online (Sandbox Code Playgroud)
我想要做的是,每当x.child_list [0]给出一个TypeError时,只需忽略该行并转到下一行,即" link = x.link "......
所以我猜是这样的:
try:
x = some_product()
name = x.name
first_child = x.child_list[0]
link = x.link
id = x.id
Except TypeError:
# Pass, Ignore the statement that gives exception..
Run Code Online (Sandbox Code Playgroud)
我应该在Except块下面放什么?或者还有其他方法可以做到这一点吗?
我知道我可以使用如果x.child_list不是None:...,但我的实际代码要复杂得多,我想知道是否有更多的pythonic方法来做到这一点
这是我之前遇到的一个简单问题。本质上,像这样和这样“忽略”异常的解决方案确实没有。即使它们不再使 python 崩溃,它们仍然会停止初始 try 子句中的任何代码。
try:
assert False
print "hello"
except AssertionError:
pass
Run Code Online (Sandbox Code Playgroud)
这段代码不会打印“hello”,而是跳过它,进入通行证。我的问题是,是否有一种简单的方法可以在 Python 2.7 中真正忽略这一点?我阅读了 3.4 中发生的一些事情以使这更容易,但我宁愿留在 python 2.7。
python ×10
exception ×4
abaqus ×1
loops ×1
pandas ×1
python-2.7 ×1
python-3.x ×1
syntax-error ×1
try-catch ×1
try-except ×1