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

vmdwslir  于 2023-04-10  发布在  Python
关注(0)|答案(3)|浏览(229)

我有点坚持这一点,我需要返回值,如果文件找到
如果找不到,则会抛出错误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

ddarikpa

ddarikpa1#

你只能从一个 * 函数返回,而你在那里没有函数。
但是,根据你问题中的代码和描述,我认为在你的例子中,“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)
dkqlctbz

dkqlctbz2#

Pythonreturn字用于从函数返回值。如果代码不在函数内部,则不能使用return字。
为了让你的代码工作,你可以这样修改它:

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
0sgqnhkj

0sgqnhkj3#

谢谢你的解决方案,我能做到:@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)

相关问题