基本上我正在尝试更新我在开头声明的字符串。然后我通过一个函数传递一个列表,在通过测试之后,将把列表中的项添加到字符串中,用分号分隔每个项目。
这是我正在做的简略版本,但它证明了我相信的问题。
import os
passList=""
def checkItem(inString):
if inString.endswith(".tif")==True:
if passList=="":
passList=inString
else:
passList=passList + ";" + inString
itemList=os.listdir("C:\\temp")
for item in itemList:
checkItem(item)
print(passList)
我查了一些关于使用' global'功能,但他们似乎没有显示适用于我的情况的例子。目前我在宣布'之前已经使用了这个功能。错误。任何帮助将不胜感激。
谢谢!
答案 0 :(得分:2)
试试这个:
def checkItem(inString):
global passList
# rest of function code
答案 1 :(得分:0)
我相信Hasan Ramezani的回答会解决你的错误。但是考虑重构以消除它的需要。
import os
itemList=filter(lambda x: x.endswith(".tif"), os.listdir("C:\\temp"))
itemList=";".join(itemList)
print(itemList)
答案 2 :(得分:0)
Hasan和Clint都提供了很好的答案。
由于实际代码的复杂性(不能在这里发布),我最终在开始和函数内都为'passList'变量声明了'global'。
import os
global passList
passList=""
def checkItem(inString):
if inString.endswith(".tif")==True:
global passList
if passList=="":
passList=inString
else:
passList=passList + ";" + inString
itemList=os.listdir("C:\\temp")
for item in itemList:
checkItem(item)
print(passList)
虽然可能看起来不那么性感但是有效。
非常感谢你!