[英]Print a returned file from a function
我只想打印從單獨的函數返回的文件:
def open_file():
while True:
try:
filename = input("Input a file name: ")
file=open(filename,'r')
return file
except FileNotFoundError:
print("Error: Enter a valid file.")
continue
else:
break
open_file()
for line in file:
print(line)
它提示輸入文件,並在輸入無效文件時給出錯誤並重新提示,但是在輸入有效文件時,它表示未定義“文件”。 它是在open_file函數中定義的,並且是返回值...那么為什么不打印呢?
file
是類對象的名稱。 您應該使用其他東西; 代碼中的問題是您沒有保存函數中的返回代碼。
def open_file():
while True:
filename = input("Input a file name: ")
try:
f = open(filename,'r')
return f
except FileNotFoundError:
print("Error: Enter a valid file.")
continue
f = open_file()
for line in f:
print(line)
您不需要else
子句,因為您永遠不會到達它。 如果沒有異常,並且沒有-從子句返回,則無論如何都不會執行。
try…except語句具有可選的else子句,該子句在存在時必須遵循所有except子句。 對於try子句 未引發異常的 必須執行的代碼而言,這很有用 。
您可以用更優雅的方式進行操作;
for line in open_file():
print line
在文件對象上使用for循環進行迭代的行為逐行迭代文件。
首先,不要將file
用作變量。 它是內置類型,例如int
或str
。 要打印從open_file
返回的文件,您需要使用file.readlines()
函數:
f = open_file()
for line in f.readlines():
print(line)
對open_file
函數的改進:
def open_file():
while True:
try:
return open(raw_input("Enter a file name: "), 'r')
except FileNotFoundError:
print("Error: Enter a valid file name.")
file
是open_file
函數的局部變量。 因此,該功能在功能之外不可用。 您應該為返回值分配一個符號:
def open_file():
while True:
try:
# ...
return file
except FileNotFoundError:
# ...
# no break needed; the return statement ends the function
file = open_file()
for line in file:
print(line)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.