import os
设置文件夹路径,获取文件夹下的所有文件名
path = './工作文件夹/'
files_list = os.listdir(path)
设置需要查找的关键词
key_word = input("请输入要查找的关键词:")
打开结果文件
result_file = open('./demo_result.txt', 'a', encoding='utf-8')
循环处理每一个文件
for file_name in files_list:
# 判断文件类型是否在文件名中
if '.txt' in file_name:
# 找到文件时先打印提示
print("找到了文件:" + file_name)
# 将文件夹路径和文件名拼接成该文件的相对路径
target_file = path + file_name
# 打开文件,读取文件内容,然后关闭文件
file = open(target_file, 'r', encoding='utf-8')
content = file.read()
file.close()
# 判断关键词是否在文件内容中
if key_word in content:
# 匹配到关键词时先打印提示
print("妙啊,文件**{}**包含了关键词:{}".format(target_file, key_word))
# 将包含关键词的文档的文件路径,写入结果文件。
result_file.write(target_file + '\n')
关闭结果文件
result_file.close()
绝对路径与相对路径
要想打开文件,首先要知道文件的位置。众所周知,文件是通过文件路径定位的,在Python中,路径可以用字符串来表示。
而路径又分为绝对路径和相对路径。
绝对路径就是文件或文件夹在硬盘上的完整路径。永远都是根目录开头,具体的文件或文件夹名称做结尾。
在Windows系统中,绝对路径的开头永远是磁盘的名称,比如C:或者D:。而在Mac系统中,绝对路径会使用/作为开头。
举例说明一下:
Windows系统中,C盘根目录中有个名为【codes】的文件夹,该文件夹内有【工作文件夹】和【oa_01.py】,【工作文件夹】中有txt文件【05_20_2020会议记录.txt】。
用绝对路径表示这几个文件夹和文件:
'工作文件夹'的绝对路径。
'C:/codes/工作文件夹'
文件'oa_01.py'的绝对路径
'C:/codes/oa_01.py'
文件'05_20_2020会议记录.txt'的绝对路径
'C:/codes/工作文件夹/05_20_2020会议记录.txt'
绝对路径理解起来比较容易,但今天我们代码中需要用到路径的另一种形式——相对路径。
相对是指相对于当前目录的位置。 相对路径使用两个特殊符号,点.和双点..,点.表示当前的目录,双点..表示当前目录的上一级目录。
继续使用刚才的例子,如果我们打开【oa_01.py】文件,那当前目录就是【codes文件夹】。
【工作文件夹】与【oa_01.py】都在【codes文件夹】中,所以【工作文件夹】和【codes文件夹】的相对路径就可以表示为:
'工作文件夹'的相对路径
'./工作文件夹/'
'codes'的相对路径
'./'
【05_20_2020会议记录.txt】在【工作文件夹】中,所以该txt文件的相对路径为:
文件'05_20_2020会议记录.txt'的相对路径。
'./工作文件夹/05_20_2020会议记录.txt'
值得注意的是,文件夹的路径是以/结尾的,文件的路径是以具体的文件类型后缀作为结尾的。
os模块是Python内置标准库中的一个模块,os是操作系统 operating system 的缩写,该模块提供了一些和系统相关的功能,比如说获取文件名列表、获取路径等等。
方法os.listdir()会以列表形式获取目标文件夹里的所有文件和文件夹名。os.listdir()需要传入参数path,这里的path就是目标文件夹的位置,即目标文件夹的路径。
file = open(target_file, 'r', encoding='utf-8')
如上所示,open()函数用于打开一个文件,创建一个 file 对象(即文件对象)。
这样,才能在后面调用文件对象的相关方法进行读写。
设置要打开的txt文本文件的路径
target_file = './工作文件夹/05_20_2020会议记录.txt'
打开目标txt文本文件
file=open(target_file,'r',encoding='utf-8')
使用 文件对象.read() 方法读取文件内容
content=file.read()
打印txt文本文件的内容
print(content)
关闭文件对象
file.close()
读取文件”的最后一步是,关闭文件对象。
写法是文件对象.close()。我希望你牢牢记住,每一个打开的文件对象,都应该被关闭。
如果文件对象没有被关闭,那么程序在执行的过程中就会一直占用系统资源。这就像冰箱门打开以后不关闭,就会增大耗电量;浏览器上不关掉未查看的网页,就会一直占用系统内存一样。
简单总结一下,文件读取有三个步骤:
步骤一:打开——open()函数。需要注意的有三个参数:file,mode,encoding。
1.参数file是要打开文件的路径。
2.参数mode可以参考下图:
3.参数encoding控制编码,为了与公司会议记录的编码格式保持一致,需要设置为'utf-8'。
步骤二:读取——文件对象的方法read()。
步骤三:关闭——文件对象的方法close()。
总结一下,判断关键词并写入功能块的内容:
1.文件写入需要使用文件对象.write(),该方法可以将字符串写入文件对象。
2.open()函数的参数mode应该传入'w'或'a'。'w'是从头开始写,会删除掉文档内原有的内容;'a'是在结尾处写入,不会删除文档原有的内容。如果文件不存在,'w'和'a'都会创建新的文件。