我有以下对象:
FILES = (
('hello3.txt', True),
)
如何向FILES添加新元素?
我试过了:FILES.append("name.txt")
我使用此示例并需要添加到目录中的所有文件:https://groups.google.com/forum/#!topic/google-appengine/QOMzUhZ2b3Q
答案 0 :(得分:2)
你在这里使用元组。有不可变的,你不能在创建后添加东西。
最好的方法是在这里使用另一个数据结构:列表!
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T11:41:47-05:00)
Maven home: C:\Users\kbultman\Downloads\apache-maven-3.3.9\apache-maven-3.3.9
Java version: 1.7.0_79, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_79\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 8.1", version: "6.3", arch: "amd64", family: "windows
现在,追加功能可以完成其工作
FILES = ['hello3.txt', True]
有关不同数据结构的更多信息: https://docs.python.org/3/tutorial/datastructures.html
如果你需要一个更加困难和高效的结构,请阅读“字典”。
答案 1 :(得分:1)
'tuple' object does not support item assignment.
就像Moses Koledoye所说的那样,元组对象是不可改变的。
如果您要添加或删除FILES
,
尝试:
FILES = [('hello3.txt', True)]
FILES.append(('new.txt', False))
如果您想更改文件名或T / F值,请使用list
代替tuple
。
FILES = [['hello3.txt', True]]
FILES.append(['new.txt', False])
FILES[0][1] = False
但我认为这些代码太丑了。我更喜欢创建一个类而不是使用列表。
class File:
__slots__ = 'name', 'flag'
def __init__(self, name, flag):
self.name = name
self.flag = flag
FILES = [File('hello3.txt', True)]
FILES.append(File('new.txt', False))
FILES[0].flag = False
如果您的文件只有2个属性(名称和标志),那么这也是一种简单的方法。
FILES = {'hello3.txt': True}
FILES['new.txt'] = False