file=open('ClassA1.txt','a')
file=open('ClassB1.txt','a')
file=open('ClassC1.txt','a')
print('hello welcome to maths 2000')
Class=input('please enter your class '+"\n")
name=input('please enter your name '+"\n")
if Class==(int(input"A1")):
file.close('ClassB1')
file.close('ClassC1')
file.write(name+"/n")
file.close
如何检查用户输入以便关闭文件?
答案 0 :(得分:0)
fd = open("Student_info.txt", "a+")
class_info = []
print "Hello, welcome to maths 2000"
class_to_be = raw_input("Please enter your class: ")
name = raw_input("Please enter your name: ")
student = name + " " + class_to_be
class_info.append(student)
print class_info
for students in class_info:
fd.write("%s" %(students))
fd.close()
结果:
jester112358@ubuntu:~$ python stackhelp.py
Hello, welcome to maths 2000
Please enter your class: Python-class
Please enter your name: Greenie245
['Greenie245 Python-class']
并将您的列表内容写入Student_info.txt
我认为将所有信息放在一个文件中会更好,但显然如果你愿意,你可以为每个班级都有一个文件。
如果您希望每个文件都有课程,请考虑使用:
for students in class_info:
spl = students.split()
if spl[1] == "A1":
A1=open('ClassA1.txt','a')
A1.write("%s" %(students))
A1.write("\n")
A1.close()
elif ... # add anothor classes here
答案 1 :(得分:0)
你做得很长,你可以在用户给出答案后打开文件。
import os
print('hello welcome to maths 2000')
yourClass=input('please enter your class '+"\n")
filename = 'Class{}.txt'.format(yourClass)
name=input('please enter your name '+"\n")
if os.path.exists(filename):
f = open(filename, 'a')
file.write(name+"/n")
file.close()
else:
print ("Class not found")
我只是设置它以便输入确定它尝试打开的文件名,如果该文件存在,则打开它并附加其名称。
答案 2 :(得分:0)
执行这些
时file=open('ClassA1.txt','a')
file=open('ClassB1.txt','a')
file=open('ClassC1.txt','a')
文件变量包含“ClassC1.txt”,您将一次又一次地重新分配对象。 所以无论如何检查你是否执行了这个:
file.close()
最后一个文件将被关闭。 相反,我建议您首先输入要打开的文件,然后打开该文件。
file_name = input("Enter file name")
file = open(file_name, 'a')
#do your work
file.close()
答案 3 :(得分:0)
好的第一点:
这一行:
file=open('ClassA1.txt','a')
打开文件'ClassA1.txt'进行追加,将file
对象分配给名称file
(最终隐藏内置类型file
,但这里不相关)
然后是第二行:
file=open('ClassB1.txt','a')
打开文件'ClassB1.txt'进行追加,将file
对象分配给名称file
,将绑定替换为先前打开的文件“ClassA1.txt”。由于没有其他名称引用此先前打开的文件,因此它丢失了。在最好的情况下,当对象被垃圾收集时,底层文件指针将被关闭(CPython)但是这不是由语言规范保证的,而另一个实现可能无法正确释放文件指针。 / p>
在所有情况下,此时您都无法再访问“ClassA1.txt”。
现在第三行:
file=open('ClassC1.txt','a')
执行相同的操作 - 将名称file
重新分配给新文件对象等。
此时,您可能必须打开,可能没有,并且在两种情况下都无法访问(可能已经是垃圾收集)文件对象,名称file
指向第三个 - 这意味着任何写入操作file
将写入文件“ClassC1.txt”。
如果要保持打开所有三个文件,则必须通过将每个文件绑定到不同的名称来保持对它们的引用,即:
file1=open('ClassA1.txt','a')
file2=open('ClassB1.txt','a')
file3=open('ClassC1.txt','a')
或将它们存储在列表中:
files = []
files.append(open('ClassA1.txt','a'))
files.append(open('ClassB1.txt','a'))
files.append(open('ClassC1.txt','a'))
所以您现在可以通过索引访问它们,即files[0]
,files[1]
,files[2]
或在词典中:
files = {}
files["A1"] = open('ClassA1.txt','a')
files["B1"] = open('ClassB1.txt','a')
files["C1"] = open('ClassC1.txt','a')
因此您现在可以通过密钥访问它们,即files["A1"]
,files["A2"]
,files["A3"]
但是:你为什么
当你可以更简单地说:
由于您的文件以类名命名,因此您可以轻松地从类名构建文件名:
cls = input("please enter your class\n")
filename = "Class{}.txt".format(cls)
f = open(filename, "a")
f.write("whatever")
f.close()
或甚至更安全(这将确保无论发生什么情况都将关闭文件):
cls = input("please enter your class\n")
filename = "Class{}.txt".format(cls)
with open(filename, "a") as f:
f.write("whatever")
请注意,在这种情况下,您无需致电f.close()
其他几点:
Class=input('please enter your class '+"\n")
=> 'cls'或'class_',而不是'Class' - 按照惯例,大写名称是用于类(在OO含义中)的名称。
=> Python不是PHP:'please enter your class \n'
只是工作
if Class==(int(input"A1"))
我不知道你期望这条线做什么,但它肯定看起来你也不知道......有一件事是肯定的:一个字符串不会等于一个整数。从未...
file.close('ClassB1')
您是否阅读过文档?就在这里(好吧,至少是首发):https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files
file.close
你想要file.close()
。 parens不是可选的 - 如果你想至少调用这个方法。