为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 打开文件夹中的所有 .txt 并检查匹配变量的行

Python - 打开文件夹中的所有 .txt 并检查匹配变量的行

米脂 2023-03-22 17:02:58
我有一个 keys1.txt、keys2.txt、keys3.txt 和 keys4.txt 我的程序需要输入类似ABC123我必须通过程序检查 keys1.txt 是否有该输入的行。如果没有,它会转到 keys2.txt 等。该文件必须检索 txt 文件的名称,名称不能是源代码上的硬编码。如果我对文件名进行硬编码,我知道如何执行此操作,但在这种情况下无法完成。目前我让它检查文件名并将它们放在列表中并打开所有文件。我确实在检查我的密钥是否属于任何文件时遇到问题,如果是,则要了解它属于哪个文件。file_list = next(os.walk("Keys"))[2]    print(file_list)    for filename in file_list:        with open("Keys" + filename) as f_obj:            f_obj所有的文件看起来像QWE123ASY981ASD192...
查看完整描述

3 回答

?
陪伴而非守候

TA贡献1757条经验 获得超8个赞

如果您需要打开这些文件但不能将它们硬编码到程序中,您可能必须将它们作为命令行参数获取。然后你可以像这样执行你的程序:

$ python code.py ABC123 keys1.txt keys2.txt keys3.txt


查看完整回答
反对 回复 2023-03-22
?
动漫人物

TA贡献1815条经验 获得超10个赞

遍历每个 .txt 文件和该文件中的行(您尚未指定这些 txt 文件的外观)。检查与各种方法的匹配,我需要更多详细信息以及您到目前为止尝试提供的帮助。



查看完整回答
反对 回复 2023-03-22
?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以使用os.listdir它来获取随后将遍历的文件列表。


参考: https: //docs.python.org/3/library/os.html#os.listdir


files_list = os.listdir('/path/to/keys')  # ['keys1.txt', ...]

search_string = 'ABC1234'

found = False


for file in files_list:

    if found:

        break

    with open(file, 'r') as fo:

        for line in fo:

            if line == search_string:

                found = file

                break


print(f'Found line `{search_string}` in file `{found}`.}


查看完整回答
反对 回复 2023-03-22
  • 3 回答
  • 0 关注
  • 135 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信