我正在玩cgi(上传文件格式),
我收到文件作为存储对象,我把它放入(输入)变量。
这是简单的迭代。
for file in input:
filepath = ....
filename, fileext = os.path.splitext(filepath)
file_real_name = ....
file_size = ....
file_type = ...
file_url = ....
file_short_name = ...
file_show_link = ....
# etc
如果只有一个文件会很容易,但如果我有多个文件会怎样?
我怎样才能拥有另一个包含
中所有迭代信息的值与uploaded_files
类似,我可以使用上述迭代的所有信息访问每个上传的文件吗?
我试图阅读文档,但我无法绕过一些迭代概念,抱歉:)
答案 0 :(得分:1)
您希望使用数据结构来保存数据。根据复杂程度,您可能只想使用词典列表:
files = []
for file in input:
files.append({
"path": get_path(file),
"name": get_name(file),
"size": get_size(file),
...
})
或者,如果您发现需要对数据执行大量操作,则可能需要创建自己的类并创建对象列表:
class SomeFile:
def __init__(self, path, name, size, ...):
self.path = path
...
def do_something_with_file(self):
...
files = []
for file in input:
files.append(SomeFile(get_path(file), get_name(file), get_size(file), ...))
请注意,您在这里遵循通过迭代迭代器来构建列表的模式。您可以使用list comprehension有效地执行此操作,例如:
[{"path": get_path(file), "name": get_name(file), ...} for file in input]
答案 1 :(得分:0)
results = []
for i in range(5):
file_data = {}
file_data['a'] = i
file_data['b'] = i**2
results.append(file_data)
print results