尝试在我的脚本中简化大量的重复读写,我无法弄清楚如何从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未定义。我只是在我运行的函数中定义它。我非常困惑
答案 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)