可能重复:
如何在Python中连接两个生成器?
有没有办法在python中使用os.walk一次遍历多个目录?
my_paths = []
path1 = '/path/to/directory/one/'
path2 = '/path/to/directory/two/'
for path, dirs, files in os.walk(path1, path2):
my_paths.append(dirs)
Run Code Online (Sandbox Code Playgroud)
上面的例子不起作用(因为os.walk只接受一个目录),但我希望有一个更优雅的解决方案,而不是两次调用os.walk(加上我可以一次排序).谢谢.
我想要做的是从一个键获得3个值到单独的变量.目前我这样做:
for key in names:
posX = names[key][0]
posY = names[key][1]
posZ = names[key][2]
Run Code Online (Sandbox Code Playgroud)
这对我来说似乎不太直观,即使它有效.我也试过这样做:
for key, value in names:
location = value
Run Code Online (Sandbox Code Playgroud)
不幸的是,这给了我一个单独的对象(这是我的预期),但我需要分配给键的各个值.感谢并为我对Python的新见道歉.
更新 抱歉没有指定我从哪里获取我的值.以下是我为第一个例子做的事情.
names = {}
for name in objectNames:
cmds.select(name)
location = cmds.xform(q=True, ws=True, t=True)
names[name] = location
Run Code Online (Sandbox Code Playgroud) 我有一个基于django类的视图,我正在装饰.不幸的是,装饰器进行外部调用以进行状态检查,这超出了单元测试应该做的范围,所以我想覆盖装饰器在单元测试期间什么都不做.这是我的装饰者:
decorators.py
def status_check(func):
@wraps(func)
def wrapped(request, *args, **kwargs):
uri = settings.SERVER_URI
status_code = None
bad_status = [404, 500]
try:
response = requests.head(uri)
except requests.ConnectionError as err:
LOGGER.error('Server is hosed! Oh Noes! Error: %s ' % (err))
raise Http404
except Exception as err:
LOGGER.error('Some crazy stuff is happening. Its Bad. '
'Error: %s' % (err))
raise Http404
status_code = response.status_code
if not status_code or status_code in bad_status:
LOGGER.error('Awww Snap! Server is not happy: %s' % (status_code))
raise Http404
return func(request, …Run Code Online (Sandbox Code Playgroud) 所以我有几个大型数据集,我需要使其更具可读性,目前我必须进入并移动到每个第3个值并插入换行符.我已经在VIM中尝试了几个方法来实现这一点,但似乎没有一个能够返回我正在寻找的价值.这是我的一些数据:
(0.96260310749184663, 4.3830008206495812, 0.84922658632317849),
(0.96260310749184663, 5.0000002088986637, 1.049701855818201),
(0.96260310749184697, 5.6169993576359696, 0.8492264385213405),
(0.96260310749184719, 5.9983257940402384, 0.32437568665165911),
(0.96260310749184719, 5.9983258053918069, -0.32437572732698844),
(0.96260310749184719, 5.6169994358349786, -0.84922691097323821),
(0.96260310749184697, 5.0000000093711492, -1.0497019267383632)
Run Code Online (Sandbox Code Playgroud)
我需要做的是让它看起来像这样:
(0.96260310749184663, 4.3830008206495812,
0.84922658632317849),
(0.96260310749184663, 5.0000002088986637,
1.049701855818201),
(0.96260310749184697, 5.6169993576359696,
0.8492264385213405),
(0.96260310749184719, 5.9983257940402384,
0.32437568665165911),
(0.96260310749184719, 5.9983258053918069,
-0.32437572732698844),
(0.96260310749184719, 5.6169994358349786,
-0.84922691097323821),
(0.96260310749184697, 5.0000000093711492,
-1.0497019267383632)
Run Code Online (Sandbox Code Playgroud)
我在选择中使用它来尝试让它将第三个值向下移动,但它复制了整个事物,然后将整行移动:
:'<,'>s/\([-[0-9.]\+,\s[-[0-9.]\+,\)/\1\r&/g
Run Code Online (Sandbox Code Playgroud)
我也尝试删除1以使其工作,但这也不起作用.那么有什么方法可以捕获第三个值并插入回车符或换行符来使其工作?谢谢.
编辑 - -
我为错误沟通我的部分问题而道歉:顶部的数据全部在一行,而不是几行.它看起来像这样:
(0.31852533878680489, 0.10352149350126813, -0.0046069731261429991), (0.31852526554320226, -0.103521543762028, -0.0046069731261429991), (0.19682845687859715, -0.27102285045297636, -0.004606973126142444), (-8.1184530326649769e-05, -0.33500267513407755, -0.0046069731261416669), (-0.19699089317458821, -0.27102292369657782, -0.0046069731261408897), (-0.31868770183919259, -0.10352150714022559, -0.0046069731261403346), (-0.31868770183919221, 0.10352156674487166, -0.0046069731261403346),
Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用Python - 我的重点是将它与Maya及其API一起使用 - 我发现当我正在处理某些事情时,通常至少有2到3种方法可以做同样的事情.我正在努力做到.例如:
for key, value in locNameConnector.iteritems():
value = locNameConnector[key]
cmds.connectJoint(value, key, pm=True)
Run Code Online (Sandbox Code Playgroud)
要么
for name in locNameConnector:
cmds.connectJoint(locNameConnector[name][0], name, pm=True)
Run Code Online (Sandbox Code Playgroud)
现在代码在Maya中调用特定的东西,但我的问题是,哪种方式更正确?我觉得第一个是因为它利用了Python的力量,而第二个可以用任何语言编写.有更正确的方法吗?一个比另一个快吗?