使用Python的f-string遍历ADLS目录时遇NameError问题求助
问题解决:NameError: name 'test1' is not defined
错误原因
你在定义datasets列表时,直接写了test1和test2,Python会将它们视为变量名,但你并未提前定义这两个变量,因此触发NameError。同时你的循环逻辑存在问题:input_path = f"datasets"既没有用到循环变量,也没有正确拼接ADLS的路径格式。
修正步骤
- 将目录名转为字符串:把
test1和test2用引号包裹,作为字符串存入列表——它们是ADLS中的目录名称,不是变量。 - 生成正确的ADLS路径:利用f-string结合循环变量,拼接符合ADLS规范的完整路径(标准格式为
abfss://<container>@<account>.dfs.core.windows.net/<directory>)。
修正后的代码
# Primary storage info account_name = "accountnamehere" # fill in your primary account name container_name = "logscontainer" # fill in your container name subscription_id = "subscriptionname" resource_group = "My-Resource-ML" # fill in your resource group for ADLS account workspace_name = "My-Workspace-ML" # fill in your la workspace name # 目录名用字符串包裹,避免被识别为未定义变量 datasets = ["test1", "test2"] for dir_name in datasets : # 用f-string拼接ADLS完整路径 input_path = f"abfss://{container_name}@{account_name}.dfs.core.windows.net/{dir_name}" print(input_path)
额外说明
- 若你使用的是其他ADLS路径协议(如不同版本的存储格式),可根据实际需求调整
input_path的模板。 - 把循环变量名改为
dir_name比df更直观,因为此处遍历的是目录名称,而非DataFrame对象。
内容的提问来源于stack exchange,提问作者Lopa
相关产品推荐
相关产品推荐

