gpt4 book ai didi

python - 将行附加到文件,然后读取它们

转载 作者:太空宇宙 更新时间:2023-11-04 10:20:21 24 4
gpt4 key购买 nike

我想向文件追加或写入多行。我相信以下代码会附加一行:

with open(file_path,'a') as file:
file.write('1')

我的第一个问题是,如果我这样做:

with open(file_path,'a') as file:
file.write('1')
file.write('2')
file.write('3')

它会创建一个包含以下内容的文件吗?

1
2
3

第二个问题——如果我以后这样做:

with open(file_path,'r') as file:
first = file.read()
second = file.read()
third = file.read()

将内容读取到变量中,以便 first1second2 ETC?如果没有,我该怎么做?

最佳答案

问题一:没有

file.write 简单地将您传递给它的任何内容写入文件中指针的位置。 file.write("你好"); file.write("World!") 将生成一个内容为 "Hello World!"

的文件

您可以通过向要写入的每个字符串附加换行符 ("\n") 或使用 print 函数的 来编写整行>file 关键字参数(我发现它更简洁)

with open(file_path, 'a') as f:
print('1', file=f)
print('2', file=f)
print('3', file=f)

注意print to file 并不总是添加换行符,但 print 本身默认添加换行符! print('1', file=f, end ='') 等同于 f.write('1')

问题2:没有

file.read() 读取整个文件,而不是一次读取一行。在这种情况下你会得到

first == "1\n2\n3"
second == ""
third == ""

这是因为在第一次调用 file.read() 之后,指针被设置到文件的末尾。随后的调用尝试从指向文件末尾的指针读取。因为它们在同一个地方,所以你得到一个空字符串。更好的方法是:

with open(file_path, 'r') as f:  # `file` is a bad variable name since it shadows the class
lines = f.readlines()
first = lines[0]
second = lines[1]
third = lines[2]

或者:

with open(file_path, 'r') as f:
first, second, third = f.readlines() # fails if there aren't exactly 3 lines

关于python - 将行附加到文件,然后读取它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32634337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com