繁体   English   中英

获取错误 SyntaxError: 'return' 外部函数

[英]getting Error SyntaxError: 'return' outside function

如果找到文件,我需要返回值

如果未找到将抛出错误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]返回任何值,那么它会导致 Index Out of List ,在这种情况下返回 var => abc.txt

你只能从一个函数返回而你在那里没有函数。

但是,根据您问题中的代码和描述,我会说您的案例中“返回”的定义只是打印值。 这可以通过以下方式完成(当然,在导入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)

Python返回字用于从函数返回值。 如果您的代码不在函数内,则不能使用返回字。

为了使您的代码工作,您可以将其更改为:

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM