首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python:如果目录存在,如何检查特定的模式日志文件是否存在

python:如果目录存在,如何检查特定的模式日志文件是否存在
EN

Stack Overflow用户
提问于 2019-12-05 17:51:45
回答 2查看 223关注 0票数 0

我在python代码内的shell中运行命令(ls -ltr /a/b/c/filename*.log)。问题是如果目录/a/b/c不存在,它会生成错误,如果没有模式为filename*.log的日志文件,它也会失败。因此,在shell中运行该命令之前,我希望对目录和文件模式进行检查。到目前为止,我尝试了下面的代码。

代码语言:javascript
复制
def subprocess_cmd(command):
    process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
    proc_stdout = process.communicate()[0].strip()
    return proc_stdout

DIR_PATH = "/a/b/c"
if os.path.exists(DIR_PATH):
    files = os.listdir(DIR_PATH)
    if "filename" in BASENAME for BASENAME in files:
        CMD = "ls -ltr /a/b/c/filename*.log"
        LOGFILE = subprocess_cmd(CMD)

获取下面的错误

代码语言:javascript
复制
    if "filename" in BASENAME for BASENAME in files:
                                ^
SyntaxError: invalid syntax

请注意,我并不是在检查特定文件是否存在。我很担心这种模式。

EN

回答 2

Stack Overflow用户

发布于 2019-12-05 17:57:43

使用

代码语言:javascript
复制
try:
   ....
except Exception as e:
   #some code to handle the missing directories
票数 1
EN

Stack Overflow用户

发布于 2019-12-05 20:37:16

试一试

代码语言:javascript
复制
if [f for f in files if f.startswith(BASENAME)]:
    ...

这将创建一个名称以BASENAME开头的文件列表,并检查该列表是否为空。

请注意,它不会检查扩展(但您当然可以添加f.endswith(".log")作为第二个条件)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59192362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档