如何在文件名中包含整数 (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在评论中所说。您必须将其显式转换为 int
和 int()
才能对其执行数值运算(range()
需要一个数字,它不会将字符串转换为 int
)。
此外,您将 lines
定义为两个字符串的元组。您可以考虑将其更改为 lines = "hi" + name
甚至 lines = f"hi {name}"
。在这种情况下,我认为您不会得到预期的输出。
我正在编写一个代码,该代码将创建与他们输入的数字相等的文本文件,所有文本文件都以他们的名字命名。到目前为止我有这个
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在评论中所说。您必须将其显式转换为 int
和 int()
才能对其执行数值运算(range()
需要一个数字,它不会将字符串转换为 int
)。
此外,您将 lines
定义为两个字符串的元组。您可以考虑将其更改为 lines = "hi" + name
甚至 lines = f"hi {name}"
。在这种情况下,我认为您不会得到预期的输出。