基本上,我是几天前启动Python的,想要创建一个可以读取和写入文件的程序。问题是我收到此错误: io.UnsupportedOperation:不可写
choice = input("Open / Create file: ")
if choice == 'Create' or choice == 'create':
new_file_name = input("Create a name for the file: ")
print(open(new_file_name, "w"))
text = input("Type to write to file: \n")
file2 = open(new_file_name)
print(file2.write(text))
print("Reading file...")
print(open(new_file_name, "r"))
print(file2.read())
elif choice == 'Open' or choice == 'open':
filename = input("File name or directory: ")
file = open(filename)
open(filename, "r")
time.sleep(1)
print("Reading file...")
time.sleep(1)
print(file.read())
choice2 = input("Write to file? Y/N \n")
if choice2 == 'Y' or choice2 == 'y':
text2 = input("Type to write to file: ")
open(filename, "w")
file = open(filename)
file.write(text2)
choice3 = input("Read file? Y/N ")
if choice3 == 'Y' or choice3 == 'y':
print(file.read())
答案 0 :(得分:1)
您最好从代码中发布进度报告的想法,尤其是在开始阶段。但是您似乎不太了解两者之间的区别
print(open(new_file_name, "w"))
这是您的代码实际执行的操作,
print(f'open("{new_file_name}", "w")')
我相信其中的第二个是您要执行的操作:它会打印
open("myfile.txt", "w")
但是您的实际代码要做的是(1)创建一个用于写入的打开文件对象,然后(2)将其类型和内存位置打印到屏幕上,最后(3)将其丢弃。
因此,第一个解决方法是发出print()
调用,或者至少将它们减少到print("step 1")
等,直到您知道如何正确执行。
第二个解决方法是通过尝试 read 来不响应“创建”的选择。如果用户正在创建文件,那么他们显然对任何先前版本的内容都不感兴趣。您的代码通过读取文件来响应Create,这对我来说似乎是从头开始的,通常,程序应以普通用户(例如我)认为直观的方式工作。这是执行“创建”位的正确方法:
choice = input("Open / Create file: ")
if choice == 'Create' or choice == 'create':
new_file_name = input("Create a name for the file: ")
with open(new_file_name, "w") as file2:
file2.write("This is stuff to go into the created file.\n")
else:
...
这会询问文件的名称,将其打开以进行写入,然后向其中写入一些内容。