目录
文件
打开文件
文件读取
关闭文件
文件写入
with 语句
总结:
实操
文件常见文件类型:
f = open("C:/Users/达/Desktop/record.txt", "r", encoding="utf-8") #打开文件
content = f.read() #读取文件内容
f.close() #关闭文件
print(content) #测试文件
open() 函数打开文件并返回文件对象
我们使用内置函数open( )打开文件test.txt,然后使用变量f来存储打开的文件
open( )函数接收了三个参数,第一个是文件路径,第二个是文件的读写模式,第三个是文件的解码方式。前两个参数我们使用了位置传参,分别传入"test.txt"和"r",最后一个使用了关键字传参。。
f = open("C:/Users/达/Desktop/record.txt", "r", encoding="utf-8") #打开文件
三个实参对应的形参分别是file、mode、encoding。file表示要读写的文件路径,是字符串类型;mode是读写模式,也是字符串类型;encoding是解码方式,也是字符串类型。
然后我们来看第二个形参mode传入了"r",意思是我们要使用只读的方式来处理文件。
只读是什么意思呢?只读的意思就是只能读取,不能写入。"r"是英文单词read的缩写,代表着只读模式。"r"也是mode参数的缺省值。
也就是说如果我们不对形参mode传入实参,open( )函数也会默认使用只读处理模式。
f.read( )读取文件f中的内容。read( )函数是文件对象的特有方法,它没有参数。
我们把文件读取的内容存储给了变量content,并在最后打印出了content变量。
content = f.read() #读取文件内容
f.close() #关闭文件
print(content) #测试文件
- readline( )方法是一行一行地读取数据,
- readlines( )方法是一次性读取整个文件的所有行的数据,数据的行就是使用\n来区别的
- list(f) 可以把文件整个内容放进列表里
- tell()可以告诉当前指针所在位置
关闭文件
简单粗暴,不要忘记
变量名.close()
文件写入
f = open("C:/Users/达/Desktop/record.txt", "w", encoding="utf-8") # 打开文件
# 第二步 写入内容
f.write('一二三四五\n')
f.write('上山打老虎\n')
# 第三步 关闭文件
f.close()
# 第四部 只读方式打开文件
f = open("C:/Users/达/Desktop/record.txt", "r", encoding="utf-8")
date = f.read()
f.close()
print(date)
这里使用写模式,也就是"w"。
与表示只读的"r"不同,“w"是write的缩写,表示只写。所以在进行写入时,给参数mode传入的参数值应该是"w”
写入的时候会先暴力清空文件所有内容,再从第一行开始写。如果你不想覆盖原来的内容,可以使用另一种模式"a"(append)来追加
f = open("C:/Users/达/Desktop/record.txt", "a", encoding="utf-8") # 打开文件
# 第二步 写入内容
f.write('一二三四五\n')
f.write('上山打老虎\n')
# 第三步 关闭文件
f.close()
# 第四部 只读方式打开文件
f = open("C:/Users/达/Desktop/record.txt", "r", encoding="utf-8")
date = f.read()
f.close()
print(date)
with open("C:/Users/达/Desktop/record.txt", "a", encoding="utf-8") as f:
f.write("这里是用with语句写入的句子")
没有用close()关闭文件,with语句写入的句子被保存了下来
编写一个程序,接受用户的输入并保存为新的文件
def file_write(file_name):
f = open(file_name, "w",encoding="utf-8")
print("请输入内容,如果单独输入w则保存退出")
while True:
write_some = input()
if write_some != 'w':
f.write(write_some)
else:
break
f.close()
file_name = input("请输入文件名:")
file_write(file_name)
编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏幕上
def file_view(file_name, line_num):
print('%s文件的%s行内容如下' % (file_name, line_num))
f = open(file_name,encoding="utf-8")
for i in range(int(line_num)):
print(f.readline(), end='')
f.close()
file_name = input('请输入文件名:')
line_num = input('请输入行数:')
file_view(file_name, line_num)