考虑以下代码:
import pickle
def open_file(fname, fname1 = None):
# returns a new OPEN file
if fname1:
while fname == fname1:
f_name = input("File already open, filename: ")
f = None
while not f:
try:
f = open(fname, "rb")
except IOError:
fname = input("File not found, filename: ")
print(fname, "open")
return f
def get_2cubes():
a_name = input("\nWhat is the name of the first cube's file? ")
a_file = open_file(a_name)
#a_cube = pickle.load(a_file)
a_file.close()
b_name = input("\nWhat is the name of the second cube's file? ")
b_file = open_file(b_name, a_name)
#b_cube = pickle.load(b_file)
b_file.close()
#return a_cube, b_cube
get_2cubes()
该代码仅在不是第一个文件时才打开第二个文件。
第一个文件的名称由fname1
open_file() 表示。如果第二个文件的名称(b_name
在这种情况下)与第一个文件的名称匹配,则会提示用户输入新名称。
None
我为参数提供了一个默认参数,fname1
因为该函数有时仅用于打开一个文件,而不用于将其与另一个文件进行比较。但是,我似乎无法覆盖默认参数。
中的条件无法识别a_name
第 7 行中的变量,因此我可以两次打开同一个文件。我将如何纠正这一点?get_2cubes
if fname1:
open_file