当我在函数内部打印变量时,它会打印出我想要的内容。但是,当我在函数外部打印它时,它会打印文件位置而不是文件中的实际值。
def go():
username = os.getlogin()
file2 = ('C:/Users/'+username+'/enteryourmessagehere.txt')
if os.path.exists(file2):
try:
os.rename(file2,file2+"_")
file = open('C:/Users/'+username+'/enteryormessagehere.txt', 'r').read()
os.remove('C:/Users/'+username+'/enteryormessagehere.txt')
main4()
return file
except OSError as e:
file2 = open('C:/Users/'+username+'/enteryourmessagehere.txt_', 'r').read()
os.remove('C:/Users/'+username+'/enteryourmessagehere.txt_')
print (file2)
main4()
return file2
def main4():
file2 = go()
print (file2)
函数go里面的输出是文件中的任何内容,但函数main4的输出是C:/ Users /'+ username +'/ enteryormessagehere.txt
答案 0 :(得分:2)
def go():
username = os.getlogin()
file2 = ('C:/Users/'+username+'/enteryourmessagehere.txt')
# …
return file2
def main4():
file2 = go()
print (file2)
这是代码的相关部分。 file2
是文件名,因此当您返回file2
时,您将返回文件名,并打印出该文件名。
file2
确实会发生变化,但只有在OSError
时才会发生变化。使用变量名来告诉你什么是真的,这是一个非常好的主意。例如。使用fileName
或filePath
作为文件名或路径,对于文件内容,请使用能够明确表示某些内容的内容,例如fileContent
或userMessage
(如果在您的上下文中有意义的话)。
最后,我不确定你在那里做了什么。你在交替中递归地调用go
和main
,这看起来有点奇怪和不稳定。你应该考虑改变它。