如何调用python函数调用

2024-04-29 07:00:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个python函数,它在第一次调用时按预期工作。 一旦我添加了另一个调用,它就是errors out“IndexError:list index out of range”

import os
import re
import glob

LDIR="/data/reports/get-snapshots/labs"
PDIR="/data/reports/get-snapsnots/prod"


def get_latest_snap_files(path, *paths):
    snap_path=os.path.join(path, *paths)
    snap_file=sorted(glob.iglob(snap_path), key=os.path.getctime, reverse=True)
    return snap_file[0]

def main():
    l=get_latest_snap_files(LDIR, '*')
    print(l)
    p=get_latest_snap_files(PDIR, '*')
    print(p)
main()

$python h.py
/data/reports/get-snapshots/labs/labs.snapshot.2019-05-25_184501-out.sorted.log

Traceback (most recent call last):
  File "h.py", line 24, in <module>
    main()
  File "h.py", line 22, in main
    p=get_latest_snap_files(PDIR, '*')
  File "h.py", line 16, in get_latest_snap_files
    print(snap_file[0])
IndexError: list index out of range


Tags: pathpyimportdatagetosmainfiles
1条回答
网友
1楼 · 发布于 2024-04-29 07:00:17

根据@Chris\u Rands对你答案的评论,snap_file有时可能是空的。你知道吗

您应该检查它并在发生这种情况时返回None。你知道吗

import os
import re
import glob

LDIR="/data/reports/get-snapshots/labs"
PDIR="/data/reports/get-snapsnots/prod"


def get_latest_snap_files(path, *paths):
    snap_path=os.path.join(path, *paths)
    snap_file=sorted(glob.iglob(snap_path), key=os.path.getctime, reverse=True)
    return None if len(snap_file) == 0 else snap_file[0]

def main():
    l=get_latest_snap_files(LDIR, '*')
    print(l)
    p=get_latest_snap_files(PDIR, '*')
    print(p)
main()

相关问题 更多 >