如何从python中的def函数中获取数据

时间:2018-01-22 22:39:29

标签: python python-3.5

尝试在我的脚本中简化大量的重复读写,我无法弄清楚如何从def函数中获取数据。

def writefile(FILE, DATA):
    file = open(FILE, "w")
    X = str(DATA) 
    file.write(X)
    file.close()
def readfile(FILE):
    file = open(FILE, "r")
    readvar = file.read()
    file.close()
readfile("BAL.txt")
print(readvar)

我希望存储在BAL.txt中的值能够返回,但它总是说readvar未定义。我只是在我运行的函数中定义它。我非常困惑

3 个答案:

答案 0 :(得分:1)

在Python中,函数内部的变量通常无法从外部访问(查找变量作用域)。您可以在函数末尾放置一个return语句来返回变量(在这种情况下为readvar)(您几乎总是应该这样)。然后,您可以将返回的参数(readvar)分配给新变量(例如rv)。你也可以给它起相同的名字。

def writefile(FILE, DATA):
    file = open(FILE, "w")
    X = str(DATA) 
    file.write(X)
    file.close()
def readfile(FILE):
    file = open(FILE, "r")
    readvar = file.read()
    file.close()
    return readvar
rv = readfile("BAL.txt")
print(rv)

答案 1 :(得分:1)

您无法看到readfile的值,因为它仅在print(readvar)功能的范围内本地定义,而非全局,因为您正在尝试在调用return时使用它。

如果你需要一个值超出函数范围,你必须def readfile(FILE): file = open(FILE, "r") file_data = file.read() file.close() return file_data file_data = readfile("my_file.txt") print(file_data) 到调用函数的位置,如下所示:

with

我还建议在执行文件操作时使用def writefile(FILE, DATA): data = str(DATA) with open(FILE, 'w') as write_stream: write_stream.write(data) def readfile(FILE): with open(FILE, 'r') as read_stream: file_data = read_stream.read() return file_data file_data = readfile("my_file.txt") print(file_data) 块。确保文件句柄正确关闭的最佳做法,即使发生异常也是如此。这改进了操作可能遇到的任何错误的处理。例如:

for

如果您想逐行访问该文件,我们只需在with范围内添加def readfile(FILE): with open(FILE, 'r') as read_stream: for line in read_stream print(line) 循环。例如,打印文件的每一行:

open -a safari 'https://stackoverflow.com' 'https://stackoverflow.com/questions/48391547'

答案 2 :(得分:0)

简单。试试这个

def personal_data():

name1 = input("What is you 1st Name?").upper()
name2 = input("What is your last Name?").upper()
return name1 + name2

fname = personal_data()

print(fname)