如何在读取文件后再次写入文件(或为读取和写入过程创建循环)?

时间:2017-06-28 16:52:09

标签: python python-3.x

我正在编写一个程序,允许您写入文件然后查看它。我的程序只有在我先添加文本然后再查看时才有效。另一方面,当我读取文件然后再次尝试写入

我会在此行file.write(addtext + "\n")上出现此错误:

io.UnsupportedOperation: not writable

这是我的代码:

file = open("notebook.txt","r")
file = open("notebook.txt","w")
while True:
    print("(1) Read the notebook \n(2) Add note \n(3) Empty the notebook \n(4) Quit")
    selection = int(input("Please select one:"))
    if selection == 1:
        file = open("notebook.txt","r")
        content = file.read()
        print(content)
    elif selection == 2:
        addtext = input("Write a new note:")
        file.write(addtext + "\n") 

我试图在阅读过程之后添加file.close或替换这行代码file = open("notebook.txt","r"),但它们都不起作用。

3 个答案:

答案 0 :(得分:0)

我认为 notebook.txt 存在。否则在使用此代码之前创建它(或修改此代码以管理此文件不存在的情况)。

首先不能同时写入和读取文件。首先,您阅读并在撰写之后,使用with范例在使用后自动关闭文件并提示打开文件太多操作系统错误(如果您忘记在{{1}之后关闭文件例如)

执行:

add_filter( 'woocommerce_order_number', 'change_woocommerce_order_number', 1, 2);

function change_woocommerce_order_number( $order_id, $order ) {
    $prefix = '#SAM-';
    $suffix = '-' . date(Y); 
    // You can use either one of $order->id (or) $order_id
    // Both will work
    return $prefix . $order->id . $suffix;
}
  

不要使用IOError作为变量名,因为它是内置函数,在Python 2中请参阅here(对于关键字here同样的事情)

答案 1 :(得分:0)

我不确定你的要求,但我对你的代码感到惊讶,我尽力看看我能做些什么。

首先我导入了 os 模块,以检查启动时是否存在txt文件。如果确实如此,那么我打开它进行阅读。如果没有,那么打开它进行写作。

对于 while 循环,第一个 if 语句打开txt文件进行读取,然后文件中的行存储在内容通过 readlines()功能。然后我使用 for 循环打印内容中的每一行。

第二个 if 语句打开要追加的文件,我使用 writelines()函数来编写用户的输入。

这是我的代码添加到你的代码:

import os

if os.path.isfile("notebook.txt"):
    f = open("notebook.txt", "r+")
    f.close()
else:
    f = open("notebook.txt", "w")
    f.close()

while True:
    print("(1) Read the notebook \n(2) Add note \n(3) Empty the notebook \n(4) Quit")
    selection = int(input("Please select one:"))
    if selection == 1:
        f = open("notebook.txt", "r+")
        content = f.readlines()
        for line in content:
            print(line)
        f.close()
    elif selection == 2:
        addtext = input("Write a new note:")
        f = open("notebook.txt", "a")
        f.writelines(addtext + "\n")
        f.close()
    elif selection == 3:
        f = open("notebook.txt", "w")
        with f as filename:
            filename.write("")
        print("Notebook emptied.")
    elif selection == 4:
        break

如果您有任何疑问,请与我联系。

答案 2 :(得分:-1)

尝试替换

file = open("notebook.txt", "r")

 file = open("notebook.txt", "rw")

您可能必须在重新打开文件之前关闭该文件。