尝试写入文本文件时的错误代码

时间:2019-04-26 21:45:36

标签: python python-3.x read-write

基本上,我是几天前启动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())

1 个答案:

答案 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:
    ...

这会询问文件的名称,将其打开以进行写入,然后向其中写入一些内容。