#python
Вопрос:
Мне нужна программа, которая могла бы генерировать бесконечные файлы, вот что я еще сделал
x = 1
V = "Test"
while True:
str(x)
text = x,".txt"
f = open(text, "w")
f.write(V)
x = 1
но когда я запускаю его, код ошибки
line 26, in <module>
f = open(text, "w")
TypeError: expected str, bytes or os.PathLike object, not tuple
или
[Ошибка 6]
и я не понимаю, почему, потому что я преобразую x в строку .
Комментарии:
1.
x
это строка,text = x,".txt"
это кортеж2. Кроме того, вы должны закрыть свой файл, иначе возникнет слишком много проблем с открытием файлов.
3. @BtcSources или просто используйте контекстный менеджер (
with
); также блок »x = 1
внеwhile
цикла»4. Хотя в CPython подсчет ссылок закроет большинство из них
5. «и я не понимаю, почему, потому что я преобразую x в строку». Но вы не проходите
x
, вы проходитеtext
, и текст, очевидно, является кортежем:text = x,".txt"
попробуйте сами в repl
Ответ №1:
Вам нужно объединить значения вместе. Использование запятой создает кортеж, а это не то, что вам нужно.
text = str(x) ".txt"
# or
text = f'{x}.txt'
Ответ №2:
Я бы использовал with open(filename, mode) as hanlder
так, чтобы поток файлов закрывался и мусор собирался после каждой файловой операции:
Кроме того, вы забыли увеличить x, и нет необходимости вводить приведение x в str
x = 1
V = "Test"
while True:
text = f"{x}.txt"
with open(text, "w") as f:
f.write(V)
x = 1