如何在文件名中包含整数 (python)

How to have an integer in a filename (python)

我正在编写一个代码,该代码将创建与他们输入的数字相等的文本文件,所有文本文件都以他们的名字命名。到目前为止我有这个

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 等带有输入的数字?

使用格式:

而不是 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)

我猜你想做

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)

将整数 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()
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()

应该可以解决问题。 open()x 周围的 str() 包装器甚至可能是必要的(我永远不记得某些东西是否自动转换为 str )。此外,您在 name(x) 的那一行中发生了一些奇怪的事情。您还没有将 name() 定义为一个函数,所以它应该给您一个很大的错误。

input() returns 一个字符串,如user5173426在评论中所说。您必须将其显式转换为 intint() 才能对其执行数值运算(range() 需要一个数字,它不会将字符串转换为 int)。

此外,您将 lines 定义为两个字符串的元组。您可以考虑将其更改为 lines = "hi" + name 甚至 lines = f"hi {name}"。在这种情况下,我认为您不会得到预期的输出。