查找文件&打开文件

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可以参考下图:


image.png

3.参数encoding控制编码,为了与公司会议记录的编码格式保持一致,需要设置为'utf-8'。
步骤二:读取——文件对象的方法read()。
步骤三:关闭——文件对象的方法close()。

总结一下,判断关键词并写入功能块的内容:
1.文件写入需要使用文件对象.write(),该方法可以将字符串写入文件对象。
2.open()函数的参数mode应该传入'w'或'a'。'w'是从头开始写,会删除掉文档内原有的内容;'a'是在结尾处写入,不会删除文档原有的内容。如果文件不存在,'w'和'a'都会创建新的文件。

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,620评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,336评论 1 3
  • 没事就多看看书,因为腹有诗书气自华,读书万卷始通神。没事就多出去旅游,别因为没钱而找借口,因为只要你省吃俭用,来...
    向阳之心阅读 4,838评论 3 11
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,281评论 2 7