小编Joh*_*ann的帖子

os.walk一次多个目录

可能重复:
如何在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(加上我可以一次排序).谢谢.

python os.walk

11
推荐指数
3
解决办法
6767
查看次数

Python中字典中键的多个值

我想要做的是从一个键获得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)

python dictionary

7
推荐指数
1
解决办法
2万
查看次数

在python的单元测试期间覆盖装饰器

我有一个基于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)

python django django-unittest

7
推荐指数
1
解决办法
2470
查看次数

找到每个第三个值并在VIM中插入cr或换行符

所以我有几个大型数据集,我需要使其更具可读性,目前我必须进入并移动到每个第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 vim

4
推荐指数
2
解决办法
704
查看次数

是否有一种"最佳"方式在Python中执行某些操作

我刚刚开始使用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的力量,而第二个可以用任何语言编写.有更正确的方法吗?一个比另一个快吗?

python

1
推荐指数
1
解决办法
293
查看次数

标签 统计

python ×5

dictionary ×1

django ×1

django-unittest ×1

os.walk ×1

vim ×1