我在python代码内的shell中运行命令(ls -ltr /a/b/c/filename*.log)。问题是如果目录/a/b/c不存在,它会生成错误,如果没有模式为filename*.log的日志文件,它也会失败。因此,在shell中运行该命令之前,我希望对目录和文件模式进行检查。到目前为止,我尝试了下面的代码。
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)获取下面的错误
if "filename" in BASENAME for BASENAME in files:
^
SyntaxError: invalid syntax请注意,我并不是在检查特定文件是否存在。我很担心这种模式。
发布于 2019-12-05 17:57:43
使用
try:
....
except Exception as e:
#some code to handle the missing directories发布于 2019-12-05 20:37:16
试一试
if [f for f in files if f.startswith(BASENAME)]:
...这将创建一个名称以BASENAME开头的文件列表,并检查该列表是否为空。
请注意,它不会检查扩展(但您当然可以添加f.endswith(".log")作为第二个条件)。
https://stackoverflow.com/questions/59192362
复制相似问题