Python3 如何使用 With 进行读写

Python3 How could i make Reading and writing using With

提问人:momoshki 提问时间:6/12/2023 更新时间:6/12/2023 访问量:65

问:

您好,我如何使用(与)同时进行 Python 写入和读取,我做了这个简单的函数来在 txt 文件中添加名称,但输出通常是空的......

def student():
    with open("students.txt","w+") as my_file:
        for i in range(20):
            user = input("Enter your name : ")
            my_file.write(f"{user}\n")
        print(my_file.read())

student()

尝试了 R+ W+ A+,但它们都没有工作,只有 R 有效,但随后我无法添加到文件中

python-3.x 文件 -io

评论


答:

1赞 NYC Coder 6/12/2023 #1

您需要将光标重新定位到文件的开头,写入将其移动到末尾:

def student():
    with open("students.txt", "w+") as my_file:
        for i in range(20):
            user = input("Enter your name : ")
            my_file.write(f"{user}\n")

        my_file.seek(0)  # reposition cursor to start of file
        print(my_file.read())

student()

评论

0赞 momoshki 6/12/2023
所以my_file.read() 只在光标下方读取?+ 如果我想从第 10 行及以下阅读,我应该做 my_file.seek(10) 吗?
0赞 Codist 6/13/2023
seek 函数将指针(光标,如果您喜欢这个类比)移动到某个字节偏移量,该偏移量可以是绝对的,也可以是相对的,具体取决于第二个参数。seek(10) 将移动到绝对偏移量 - 即从文件开头开始的 10 个字节。这是因为第二个参数默认为零,等于 os。SEEK_SET。除非所有行的长度相同,否则无法查找特定的行号。在这种情况下,偏移量可以计算为线长度的倍数
0赞 Mega 6/12/2023 #2

该语句是句法糖,无需在打开文件后关闭文件。在 Python 中,您尝试写入文件的内容不会刷新到磁盘上,直到文件关闭阅读此处)。这意味着,在上下文管理器 ( 语句) 中,文件仍处于打开状态,内容为空。您可以在关闭文件后(在语句之后)再次打开文件以读取内容,但效率低下。如果您要做的只是打印出结果,请尝试以下操作:withwithwith

  1. 在 for 循环中生成名称列表(不要写入此处的文件)。
  2. 将名称列表批量写入文件(用于添加换行符)。join
  3. 打印姓名列表。