文章目录
相对路径和绝对路径的区别
- 相对路径和绝对路径的区别
- 打开文件--open
- 关闭文件--close
- 读取文件--read,readline和readlines
- 写入文件内容--write和writelines
- 缓冲文件--flush
- 文件流--fileinput模块
- for循环读取文件本身的内容
- with的用法
1. 绝对路径:就是 c:/website/index.html,带有你的盘符的路径
2. 相对路径:相对你当前路径,而去表示另外的路径,../img/photo.jpg
3. 注意:../表示上一级路径,../../表示上上级路径,依次类推
打开文件–open
open()打开文件,第一个参数是文件名,一般是直接在当前目录下,第二
个参数是打开方式,文件内容还是二进制文件
f = open('file.txt','rb+')
注意:一般r都是普通打开方式,rb(后面多个b)表示二进制打开方式
关闭文件–close
file = open("file.txt","r")
file.close()
注意:当我们用write写入文件内容时,需要使用close来关闭文件,否则
文件内容保存不了
读取文件–read,readline和readlines
file = open("file.txt","r")
a = file.read()
# read(size),size表示要打开的字符数和字节数
print(a)
file.close()
# readline读取文件的第一行,后面的size参数表示多少个字符数或者字节数
# readlines读取文件的所有整行,但是用for循环,只能每行的展示
#readline与readlines
f = open("file.txt","r")
print("文件名是:",f.name)
print(f.readline())
print(f.readline(6))
for line in f.readlines():
line = line.strip()
print(line)
f.close()
写入文件内容–write和writelines
# write(参数为字符串),不带有换行符,使用w的魔石,会清空原本文件内容,可以使用a来解决这个问题
f=open("file.txt",'a')
f.write("\n写入一种数据")
# writelines()可以读入多行字符串列表,可以让一个文件写入另一个文件
f1 = open("a.txt","r",encoding="utf-8")# 当文件中含有汉字时,需要utf-8编码
f2 = open("file.txt","a")
f2.writelines(f1.readlines())
f2.close()
f1.close()
缓冲文件–flush
flush
flush() 方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,
同时清空缓冲区,不需要是被动的等待输出缓冲区写入。
一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新
它,这时就可以使用 flush() 方法
文件流–fileinput模块
fileinput中input可以打开多个文件,而且可以把数据输出出来,一般使用for循环将数据展示出来
fileinput有许多方法
1. fileinput.filename() 返回当前正在读取的文件名称。
2. fileinput.fileno() 返回当前正在读取文件的文件描述符。
3. fileinput.lineno() 返回当前读取了多少行。
4. fileinput.filelineno() 返回当前正在读取的内容位于当前文件中的行号。
5. fileinput.isfirstline() 判断当前读取的内容在当前文件中是否位于第 1 行。
6. fileinput.nextfile() 关闭当前正在读取的文件,并开始读取下一个文件。
7. fileinput.close() 关闭 FileInput 对象。
import fileinput
#使用for循环遍历 fileinput 对象
for line in fileinput.input(files=('my_file.txt', 'file.txt')):
# 输出读取到的内容
print(line)
# 关闭文件流
fileinput.close()
for循环读取文件本身的内容
import codecs
# 指定使用utf-8字符集读取文件内容
f = codecs.open("for_file.py", 'r', 'utf-8', buffering=True)
# 使用for循环遍历文件对象,也是一行一行的去读取文件本身的内容
for line in f:
print(line, end='')
f.close()
读取键盘输入内容
import sys
# 使用for循环遍历标准输入,sys,stdin也是个文件对象
for line in sys.stdin:
print('用户输入:', line, end='')
with的用法
# 使用with语句打开文件,该语句会负责关闭文件,节约了代码数量
with open("readlines_test.py", 'r', 'utf-8', buffering=True) as f:
for line in f:
print(line, end='')
f.read()