循环中引用的 Python 更新变量

克雷格

我正在尝试创建一堆目录。其中一些会由于权限等原因而失败,在这种情况下,我希望在其中创建该目录/tmp,然后替换相应变量中的值。

import os

ROOT = "/var"
IMG_DIR = "images"
HASH_DIR = "hashes"
TEAM_DIR = "teams"

for some_dir in [IMG_DIR, HASH_DIR, TEAM_DIR]:
    current_path = os.path.join(ROOT, some_dir)
    if not os.path.exists(current_path):
        try:
            os.makedirs(current_path)
        except OSError:
            new_path = os.path.join("/tmp", some_dir)
            # if the error happened in images, update IMG_DIR with the new path
            # if the error happened in hashes, update HASH_DIR with the new path
            # if the error happened in teams, update TEAM_DIR with the new path

IMG_DIR,HASH_DIR并且TEAM_DIR将是全局变量并在整个程序中访问。实现这一目标的最优雅/Pythonic 的方式是什么?

葡萄

你需要这样的东西:

import os

ROOT = "/var"
my_dirs = {
    'IMG_DIR': "images",
    'HASH_DIR': "hashes",
    'TEAM_DIR': "teams"
}

for name, path in my_dirs.items():
    current_path = os.path.join(ROOT, path)
    if not os.path.exists(current_path):
        try:
            os.makedirs(current_path)
        except OSError:
            new_path = os.path.join("/tmp", path)
            my_dirs[name] = new_path 

UPD

如果您严格要求更新变量并且不接受字典(为什么??),则可以使用以下方法:

import os

def create_dir(root: str, path: str) -> str:
    current_path = os.path.join(root, path)
    if not os.path.exists(current_path):
        try:
            os.makedirs(current_path)
        except OSError:
            new_path = os.path.join("/tmp", path)
            # maybe create this directory here?
            return new_path 
    return current_path

ROOT = "/var"
IMG_DIR =  create_dir(ROOT, "images")
HASH_DIR = create_dir(ROOT, "hashes")
TEAM_DIR = create_dir(ROOT, "teams")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python:while循环中定义的函数引用旧变量

来自分类Dev

Python - UnboundLocalError:在循环中赋值之前引用的局部变量

来自分类Dev

循环中的python变量

来自分类Dev

在python循环中基于不同范围更新变量

来自分类Dev

在循环中更新变量

来自分类Dev

ITEM在python FOR循环中是变量

来自分类Dev

for循环中的Python变量分配

来自分类Dev

python中的for循环中的变量

来自分类Dev

Python 3,循环中的变量

来自分类Dev

在Do循环中引用变量列表

来自分类Dev

引用函数内重复循环中的变量

来自分类Dev

在 For 循环中动态更新变量?

来自分类Dev

在Python For循环中重用迭代器变量

来自分类Dev

在Python中的for循环中调用列表变量

来自分类Dev

在Python中的for循环中调用列表变量

来自分类Dev

循环中的动态变量python

来自分类Dev

Python-在for循环中更新字典

来自分类Dev

使用javascript在python循环中更新HTML

来自分类Dev

在python中的for循环中更新matplotlib图形

来自分类Dev

Python:在while循环中更新列表或数组

来自分类Dev

Python:在for循环中更新父级

来自分类Dev

for循环中的循环变量何时更新?

来自分类Dev

for循环中引用变量的全局变量未正确设置

来自分类Dev

如何在Python的循环中更改for循环迭代器变量?

来自分类Dev

Python for循环中的多个循环控制变量

来自分类Dev

在'for'循环中声明的Python变量在循环外看不到

来自分类Dev

如何在循环python外的for循环中使用变量

来自分类Dev

如何在Python的循环中更改for循环迭代器变量?

来自分类Dev

将按钮作为变量引用以在循环中使用