【问题标题】:Python - Reading text files in another folder/directoryPython - 读取另一个文件夹/目录中的文本文件
【发布时间】:2017-01-11 14:12:01
【问题描述】:

这是我的情况:我在可以运行脚本的不同目录中有一些 .txt 文件。

mainDir/
    -face/
        -57268-face-_tracker.txt
        -glasses1.txt
        -etc

mainDir 是脚本应该运行的地方。 所有 .txt 文件都包含这样的字符串:

face=1  lefteye=closed  righteye=closed 

我的目标是运行文件夹中的所有 .txt 文件,并为每个 .txt 检查双眼是否闭合,如果是,则在文本文件中添加一些内容,例如:

face=1  lefteye=closed  righteye=closed  status=sleep

到目前为止,我可以运行文件夹中的所有 .txt 文件,但我无法打开它们 减一。

import os


for file in os.listdir("face"):
    if file.endswith(".txt"):

    listdir = []
    listdir = file
    print listdir

有什么建议吗?提前致谢

编辑 设法检查每个 .txt 及其字符串,但无法比较它们

import os
face = 'face'
fileDir = os.path.dirname(os.path.realpath(__file__))
faceDir = os.path.join(fileDir,face)

for file in os.listdir("face"):
    if file.endswith(".txt"):

    listdir = []
    listdir = file
    print listdir
    fpath = os.path.join(faceDir, listdir) 
    f = open(fpath)
    print f.readline()

【问题讨论】:

    标签: python string text directory


    【解决方案1】:

    这是一个快速的尝试,并且有一些轻微的错误行为(如果重复运行,它将不断为每个相关行添加状态)。

    基本上,你大部分时间都在那里。只是输出每个循环的结果的情况,在这种情况下通过编辑文件。

    我使用str.count 来评估哪些面孔在睡觉,但是有很多方法可以做到这一点。您可以用"=" 和空格分隔行。

    import os
    
    fileDir = os.path.dirname(os.path.realpath(__file__))
    faceDir = os.path.join(fileDir, "face")
    
    for file in os.listdir("face"):
        if file.lower().endswith(".txt"):
            fpath = os.path.join(faceDir, file)
            with open(fpath, 'r') as f:
                content = f.readlines()
    
            for i, line in enumerate(content):
                if line.count("closed") == 2:
                    content[i] = line.strip() + "  status=sleep\n"
    
            with open(fpath, 'w') as f:
                f.write(''.join(content))
    

    【讨论】:

    • 工作得很好,虽然它会写入两次状态。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多