提问人:momoshki 提问时间:6/12/2023 更新时间:6/12/2023 访问量:65
Python3 如何使用 With 进行读写
Python3 How could i make Reading and writing using With
问:
您好,我如何使用(与)同时进行 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 有效,但随后我无法添加到文件中
答:
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 中,您尝试写入文件的内容不会刷新到磁盘上,直到文件关闭(阅读此处)。这意味着,在上下文管理器 ( 语句) 中,文件仍处于打开状态,内容为空。您可以在关闭文件后(在语句之后)再次打开文件以读取内容,但效率低下。如果您要做的只是打印出结果,请尝试以下操作:with
with
with
- 在 for 循环中生成名称列表(不要写入此处的文件)。
- 将名称列表批量写入文件(用于添加换行符)。
join
- 打印姓名列表。
评论