Как получить целое число в имени файла (python) - PullRequest
0 голосов
/ 19 декабря 2018

Я делаю код, который будет создавать текстовые файлы, равные числу, которое они ввели, и все названы в их честь.Пока у меня есть это

name = input("Enter your name")  
num = input("Enter a number")  
x = 0
for i in range(1,num):
   x = x+1
   file = open(name(x) , "w+")
   lines = ("hi" , name)
   file.writelines(lines)
file.close()

, но имя 'name (x) "не будет работать как имя переменной, есть ли способы иметь имена переменных, такие как x1, x2, x3 и т. Д. С введеннымномер

Ответы [ 4 ]

0 голосов
/ 19 декабря 2018
name = input("Enter your name")  
num = input("Enter a number")  
x = 0
for i in range(1,int(num)):
   x = x+1
   file = open(str(x), "w+")
   lines = ("hi" , name)
   file.writelines(lines)
file.close()

Должен сделать свое дело.str() обертка вокруг x в open() может даже понадобиться (я никогда не могу вспомнить, если что-то автоматически преобразуется в str или нет).Кроме того, у вас произошло что-то странное в этой строке с name(x).Вы не определили name() как функцию, поэтому она должна была вызвать большую ошибку.

input() возвращает строку, как сказал user5173426 в комментариях.Вы должны явно привести его как int с int(), чтобы выполнить над ним числовые операции (range() ожидает число, оно не приводит к выводу строк int).

Кроме того,вы определяете lines как кортеж из двух строк.Вы можете изменить его на lines = "hi" + name или даже lines = f"hi {name}".Я не думаю, что вы получите ожидаемый результат в этом случае.

0 голосов
/ 19 декабря 2018

Полагаю, вы хотите сделать

file = open(name + str(x) , "w+")

или

file = open('{}{}'.format(name, x) , "w+")

В первой строке оператор + объединяет имя (которое является строкой) с str(x),Необходимо преобразование в строку.

Во второй строке format выполняет преобразование автоматически.

Вы можете переписать весь цикл без x:

name = input("Enter your name")
num = input("Enter a number")

for i in range(1, int(num)):
   with open('{}{}'.format(name, i) , "w+") as file:
       lines = ('hi', name)
       file.writelines(lines)
0 голосов
/ 19 декабря 2018

Измените целое число x на строку:

name = input("Enter your name")  
num = input("Enter a number")  
for i in range(1,num):
   file = open(name + str(i) , "w+")
   lines = ("hi" , name)
   file.writelines(lines)
   file.close()
0 голосов
/ 19 декабря 2018

использовать форматирование:

вместо name(x) необходимо отформатировать строку:

"{0}{1}.txt".format(name, x)

переменная name будет помещена в заполнитель {0}, переменнаяx будет помещен в заполнитель {1}.

это означает, что если name == "Answer" и x = 42, имя файла будет Answer42.txt

, форматирование может быть вВ любом случае:

"File_{1}_{0}_number{1}.txt".format(name, x)

станет: File_42_Answer_number42.txt;

или, например, ваша line переменная может быть:

line = "Welcome {0}, How are you? you have opened {1} file until now!".format(name, x)
...