0

私は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

ファイルが1つしかない場合は簡単ですが、複数のファイルがある場合はどうなりますか?

のすべての反復情報を保持する別の値を取得するにはどうすればよいですか?

uploaded_files 上記の反復のすべての情報を含むアップロードされた各ファイルにアクセスできる場所のように?

ドキュメントを読み込もうとしましたが、まだいくつかの反復の概念に頭を悩ませることはできません。申し訳ありません:)

4

2 に答える 2

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), ...))

ここでは、反復子を反復してリストを作成するパターンに従っていることに注意してください。これは、リスト内包表記を使用して効率的に行うことができます。次に例を示します。

[{"path": get_path(file), "name": get_name(file), ...} for file in input]

fileまた、とは組み込みのとinputをマスクするため、本当に悪い変数名であることに注意してください。file()input()

于 2012-05-27T17:58:29.377 に答える
0
results = []
for i in range(5):
    file_data = {}
    file_data['a'] = i
    file_data['b'] = i**2
    results.append(file_data)
print results
于 2012-05-27T17:22:02.513 に答える