我正在尝试理解函数是如何工作的并且有一个基本问题。我试图弄清楚如何将变量设置到函数中并且不知道如何。我可能更容易展示我的代码:
我有一些解压缩文件的代码
fh = open(fn, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
z.extract(name, outpath)
fh.close()
我可以将它定义为函数:
def extract_zip():
fh = open(fn, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
z.extract(name, outpath)
fh.close()
然后我可以通过输入:
来调用它extract_zip()
但是把它放到一个函数中的目的是让我可以一遍又一遍地使用它。但是当我第二次或第三次使用它时,变量名称将不是'fn',而是稍后定义的另一个变量名。
我如何编写此函数,但将'fn'定义为变量,然后通过键入
调用它extract_zip(2nd_filename)
由于
答案 0 :(得分:2)
这就像将fn
作为函数的参数
def extract_zip(fn):
fh = open(fn, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
z.extract(name, outpath)
fh.close()
有时,您可能还想使用默认名称
def extract_zip(fn="default_name.extension"):
#...
此外,请注意您的文件名可以是完整的文件名,这意味着它可以包含您要读取的文件的路径。例如,如果您的项目布局是
your_working_direcory/
your_script.py
folder1/
folder2/
file_to_read.extension
您必须定义要读取的文件的全名
yourFullFileName = os.path.join(
os.path.dirname(__file__),# __file__ is the full name of your working script,
'folder1',
'folder2',
'file_to_read.extension'
)
确保脚本的可移植性(您不必担心主要依赖于操作系统的分隔符)。然后你会像这样使用你的功能
extract_zip(fn=yourFullFileName)
答案 1 :(得分:0)
def extract_zip(name_of_file):
fh = open(name_of_file, 'rb')
z = zipfile.ZipFile(fh)
for name in z.namelist():
z.extract(name, outpath)
fh.close()
以上允许您将文件名设置为name_of_file='my filename'
答案 2 :(得分:0)
为了能够重用函数,你必须为函数创建变量元素参数,例如:
def extract_zip(filename, outpath):
with zipfile.ZipFile(filename) as z:
z.extractall(outpath)
return z.namelist()
return
返回所有归档对象的名称,以便您可以跟踪提取的项目。
files = {}
files[(filename, outpath)] = extract_zip('my.zip', 'output')
答案 3 :(得分:0)
改变变量的一种方法是添加一个 input() 函数(raw.input() 对于旧的 Python 版本)
var = input(What Is THe Filename? (Make It Exact!): )
var 是任何你的变量。