文件的读取:read(),readline(),readlines()
文件的写入:write(),writelines()
其他函数:tell()返回一个整数,是当前文件指针的位置。seek(偏移量,[起始位置])
文件的打开方式可以用:with open("xx.txt","r") as file:
文件read.txt中的内容:
1.时难年荒世业空,弟兄羁旅各西东。
2.田园寥落干戈后,骨肉流离道路中。
3.吊影分为千里雁,辞根散作九秋蓬。
4.共看明月应垂泪,一夜乡心五处同。
1. read()
>>> file=open("read.txt")
>>> a=file.read() #读取文件内容的全部,文件过大时,会占用内存过大
>>> a
>>> file.close()
'1.时难年荒世业空,弟兄羁旅各西东。\n2.田园寥落干戈后,骨肉流离道路中。\n3.吊影分为千里雁,辞根散作九秋蓬。\n4.共看明月应垂泪,一夜乡心五处同。'
>>> file=open("read.txt")
>>> a=file.read(3) #按字节读取
>>> a
'1.时'
>>> file.close()
2. readline()
>>> file=open("read.txt")
>>> a=file.readline() #读取一行
>>> a
'1.时难年荒世业空,弟兄羁旅各西东。\n'
>>> file.close()
3. readlines()
>>> file=open("read.txt")
>>> a=file.readlines() #读取文件全部内容,按行读取,返回列表
>>> a
['1.时难年荒世业空,弟兄羁旅各西东。\n', '2.田园寥落干戈后,骨肉流离道路中。\n', '3.吊影分为千里雁,辞根散作九秋蓬。\n', '4.共看明月应垂泪,一夜乡心五处同。']
>>> file.close()
4. 使用for循环遍历文件对象
>>> file=open("read.txt")
>>> for each in file:
print(each)
1.时难年荒世业空,弟兄羁旅各西东。
2.田园寥落干戈后,骨肉流离道路中。
3.吊影分为千里雁,辞根散作九秋蓬。
4.共看明月应垂泪,一夜乡心五处同。
>>> file.close()
5. write() 参数只能是string,只是单纯的加入内容,不会在内容后加其他东西
>>> file=open("write.txt","w") #打开方式为“w”,会覆盖原文件的内容
>>> L="HELLO,PYTHON"
>>> file.write(L)
12
>>> file.close()
此时文件的内容是:
HELLO,PYTHON
>>> file=open("write.txt","w")
>>> L="HELLO,PYTHON,\nI LOVE YOU"
>>> file.write(L)
24
>>> file.close()
此时文件的内容:
HELLO,PYTHON,
I LOVE YOU
参数是非字符串,报错
>>> file.close()
>>> file=open("write.txt","w")
>>> L=123
>>> file.write(L)
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
file.write(L)
TypeError: write() argument must be str, not int
writelines(): 参数必须是list/string/dict/tuple 等可迭代序列对象,且里面内容须是字符。它会自动迭代里面的内容并写入文件,只是单纯的按顺序把内容写入,不会在每个被迭代元素后面加任何东西。
>>> file=open("write.txt","w")
>>> L=["HELLO","PYTHON","I","LOVE","YOU"]
>>> file.writelines(L) #参数是列表
>>> file.close()
此时文件内容是:
HELLOPYTHONILOVEYOU
>>> file=open("write.txt","w")
>>> L={"name":"wang hailu","age":34,"score":598}
>>> file.writelines(L)
>>> file.close()
此时文件的内容:
nameagescore