获取SyntaxError时出错:函数外部的“return”

2024-09-29 21:28:33 发布

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

我有点困在这里,如果找到文件,我需要返回值

如果找不到,将抛出错误Index out of list。将需要捕获并返回在异常中分配给var变量的值,并返回该变量值

错误:

C:\Users\admin\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/admin/PycharmProjects/pythonProject3/search.py
  File "C:\Users\admin\PycharmProjects\pythonProject3\search.py", line 13
    return var
    ^
SyntaxError: 'return' outside function

我的代码:

import os
import  glob

pathname='C:\\Users\\admin\\Desktop\\JUL\\'

if os.path.exists(pathname):
    var=glob.glob('{0}/log.*'.format(pathname))
    try :
        fnme=var[0]
        head , tail = os.path.split(fnme)
        var=tail
        return var
    except  IndexError as Ier:
        var='abc.txt'
        return var

预期输出:

如果找到文件,则返回var=>;log.txt

如果不从fnme=var[0]返回任何值,则会导致索引脱离列表,在这种情况下,返回var=>;abc.txt


Tags: 文件pytxtsearchreturnadminosvar
3条回答

您只能从函数返回,而您在那里没有函数

但是,根据您问题中的代码和描述,我想说,在您的案例中,“return”的定义只是打印值。这可以通过以下方式实现(当然,在导入sys之后):

print(var)
sys.exit()

但是,您也可以稍微清理一下代码,使其更加简洁:

import os
import glob

pathname='C:\\Users\\admin\\Desktop\\JUL\\'

if os.path.exists(pathname):
    var = glob.glob(f'{pathname}/log.*')
    try:
        _, name = os.path.split(var[0])
    except IndexError:
        name = 'abc.txt'

    print(name)

Pythonreturn字用于从函数返回值。 如果代码不在函数中,则不能使用返回字

要使代码正常工作,您可以通过以下方式进行更改:

import os
import  glob

pathname='C:\\Users\\admin\\Desktop\\JUL\\'

if os.path.exists(pathname):
    var=glob.glob('{0}/log.*'.format(pathname))
    try :
        fnme=var[0]
        head , tail = os.path.split(fnme)
        var=tail
        return var
    except  IndexError as Ier:
        var='abc.txt'
        return var

为此:

import os
import  glob

pathname='C:\\Users\\admin\\Desktop\\JUL\\'

if os.path.exists(pathname):
    var = glob.glob('{0}/log.*'.format(pathname))
    try :
        fnme = var[0]
        head, tail = os.path.split(fnme)
        var = tail
    except IndexError:
        var = 'abc.txt'

print(var) # will be 'abc.txt' if there is an index error

谢谢你的解决方案,我能够做到:@paxdiablo和@GreyHope

import os
import  glob

pathname='C:\\Users\\admin\\Desktop\\JUL\\'

def returnFile(pathname):
    if os.path.exists(pathname):
        var = glob.glob('{0}/abc.*'.format(pathname))
        try:
            fnme = var[0]
            head, tail = os.path.split(fnme)
            var = tail
        except IndexError as er:
            var='abc.txt'
    return var

getfile=returnFile(pathname)
print(getfile)

相关问题 更多 >

    热门问题