Python: Open () с использованием переменной - PullRequest
2 голосов
/ 07 мая 2010

Я столкнулся с проблемой при открытии файла со случайно сгенерированным именем в Python 2.6.

import random

random = random.randint(1,10)

localfile = file("%s","wb") % random

Тогда я получаю сообщение об ошибке о последней строке:

TypeError: unsupported operand type(s) for %: 'file' and 'int' 

Я просто не могу понять это ни с собой, ни с Google, но я думаю, что для этого нужно лекарство.

Ответы [ 2 ]

9 голосов
/ 07 мая 2010

Это, вероятно, будет работать:

import random

num = random.randint(1, 10)
localfile = open("%d" % num, "wb")

Обратите внимание, что я изменил пару вещей здесь:

  1. Не следует присваивать сгенерированное случайное число переменной с именем random, поскольку вы перезаписываете существующую ссылку на модуль random. Другими словами, вы больше не сможете получить доступ к random.randint, если перезапишете random случайно сгенерированным числом.

  2. Оператор форматирования (%) должен применяться к строке, которую вы форматируете, а не к вызову метода file.

  3. Полагаю, * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * file * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * open * * * * * * * * * * * * * * * * * * *

  4. Поскольку вы форматируете целое число в строку, вы должны написать "%d" вместо "%s" (хотя последний также будет работать).

Альтернативный способ записи "%d" % num - str(num), что может быть немного более эффективным.

3 голосов
/ 07 мая 2010

Попробуйте:

localfile = file("%s" % random,"wb")
...