Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.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 3.x Python中的简单多变量循环在片大小上失败,而它应该可以正常工作_Python 3.x_For Loop_Slice - Fatal编程技术网

Python 3.x Python中的简单多变量循环在片大小上失败,而它应该可以正常工作

Python 3.x Python中的简单多变量循环在片大小上失败,而它应该可以正常工作,python-3.x,for-loop,slice,Python 3.x,For Loop,Slice,见下面的代码: #!/opt/rh/python33/root/usr/bin/python import sys print( sys.argv[1:-1] ) if ( len( sys.argv ) < 5 or len( sys.argv ) % 3 != 2 ) : print( '''Oy vey! You need to input: <1lib name> <1schematic name > <nview name> .. &l

见下面的代码:

#!/opt/rh/python33/root/usr/bin/python
import sys
print( sys.argv[1:-1] )
if ( len( sys.argv ) < 5 or len( sys.argv ) % 3 != 2 ) :
    print( '''Oy vey! You need to input: <1lib name> <1schematic name > <nview name> .. <nlib name> <nschematic name > <nview name>  <output fname>''' )
    exit ( 1 )
print( len( sys.argv[1:-1] ) )
for lib_name,cell_name,view_name in sys.argv[1:-1] :
    print( "lib is:" + lib_name )
    print( "cell is:" + cell_name )
    print( "view is:" + view_name )
#/opt/rh/python33/root/usr/bin/python
导入系统
打印(sys.argv[1:-1])
如果(len(sys.argv)<5或len(sys.argv)%3!=2):
打印(“'Oy vey!您需要输入:…”)
出口(1)
打印(len(sys.argv[1:-1]))
对于sys.argv[1:-1]中的库名称、单元格名称、视图名称:
打印(“库是:”+lib\u名称)
打印(“单元格为:”+单元格名称)
打印(“视图为:”+视图名称)
这段代码应该非常简单。我正在运行代码,但出现错误:

~]./run_automated_block.py ko lo pm do
['ko', 'lo', 'pm']
3
Traceback (most recent call last):
   File "~/run_automated_block.py", line 8, in <module>
     for lib_name,cell_name,view_name in sys.argv[1:-1] :
ValueError: need more than 2 values to unpack
[~]$
~]./运行\u automated\u block.py ko lo pm do
['ko'、'lo'、'pm']
3.
回溯(最近一次呼叫最后一次):
文件“~/run\u automated\u block.py”,第8行,在
对于sys.argv[1:-1]中的库名称、单元格名称、视图名称:
ValueError:需要2个以上的值才能解包
[~]$

我不明白。切片的长度是3。for循环中有3个变量。

当您在
sys.argv[1:-1]
列表上迭代时,您一次迭代一个元素,而不是您可能认为的三个元素,因此它自然会抱怨无法解包
ko
lo
pm
)分为三个变量-如果参数本身的长度为3(例如,
ko1lo1po1
),那么它将解压单个字符

如果您坚持这样做,您可以将值压缩成三个元组:

for lib_name, cell_name, view_name in zip(*[iter(sys.argv[1:-1])]*3):
    print("lib is:" + lib_name)
    print("cell is:" + cell_name)
    print("view is:" + view_name)

这是处理cli参数的糟糕方法。为什么不使用
argparse