unix 如何用python获得不可预测目录路径?

vulvrdjw  于 2022-11-04  发布在  Unix
关注(0)|答案(1)|浏览(176)

首先,我将简短地描述我想解决的问题:
我有一个基于UNIX的系统,它运行一个自动运行,导致图像创建。
这些图像保存在运行期间创建的目录中,目录名称不可预测[名称取决于许多因素,并非恒定。]
该目录是在一个固定路径下创建的,该路径为:
/usr/local/insight/结果/图像/工具数据库/lauto_ptest_s + str(datetime.datetime.now()).split()[ 0] + /w1
所以,现在我得到了一个不变形式的路径,它是完整路径的一部分。我试图用一种愚蠢的方式得到完整路径:
我写了一个脚本,通过按ctrl+alt+sft+w打开一个新终端,在终端中将cd命令写入常量路径,然后按tab以完成完整路径[在常量路径中总是有一个创建的目录,所以按tab将总是得到完整路径]。
从理论上讲,我在一个终端里有一个完整的路径,我如何复制这个完整的路径,并使函数返回它?
这是我代码:

import pyautogui
import datetime

def open_images_directory():

    pyautogui.hotkey('ctrl', 'alt', 'shift', 'w')
    pyautogui.write(
        'cd' + ' /usr/local/insight/results/images/toolsDB/lauto_ptest_s' + str(datetime.datetime.now()).split()[
            0] + '/w1/')
    pyautogui.sleep(0.5)
    pyautogui.hotkey('tab') # now I have a full path in terminal which I want to return by func

open_images_directory()
y0u0uwnf

y0u0uwnf1#

不知道如何使用pyautogui,但正确的解决方案是使用一些glob patterns搜索目录结构
示例:

from pathlib import Path

const_path = Path("const_path")
for path in [p for p in const_path.rglob("*")]:
    if path.is_dir():
        print(f"found directory {path}")
    else:
        print(f"found your image {path}")

const_path.rglob("*")递归地搜索每个路径,(因此它将包含每个子目录),最后一个将是您正在搜索的路径。

相关问题