Python 为函数提供参数,并以正确的方式加载函数
我对python和编程都是新手。也许你可以在以下方面帮助我: 我有两个文件:warmaker.py和functions.py 我有两个问题Python 为函数提供参数,并以正确的方式加载函数,python,function,arguments,Python,Function,Arguments,我对python和编程都是新手。也许你可以在以下方面帮助我: 我有两个文件:warmaker.py和functions.py 我有两个问题 当我对inputfile使用参数-i时,如何将此变量的值(例如test.zip)传递给我的函数unzip() 如何以正确的方式调用函数 warmaker.py def main(argv): try: opts, args = getopt.getopt(argv, "hi:o:d", ["help", "ifile=", "ofil
def main(argv):
try:
opts, args = getopt.getopt(argv, "hi:o:d", ["help", "ifile=", "ofile="])
except getopt.GetoptError:
functions.usage()
sys.exit(2)
for opt, arg in opts:
if opt in ("-h", "--help"):
functions.usage()
sys.exit()
elif opt in '-d':
global _debug
elif opt in ("-i", "--ifile"):
global ifile
ifile = arg
elif opt in ("-o", "--ofile"):
global ofile
ofile = arg
functions.unzip(ifile)
if __name__ == "__main__":
main(sys.argv[2:])
import os
import zipfile
import sys
def usage():
print "\nHow to use warmaker.py"
print 'Usage: ' + sys.argv[0] + ' -i <inputfile> -o <outputfile> '
def unzip(ifile):
print 'Before' + ifile
ifile = os.path.splitext(ifile)[0] + ".zip"
print 'after' + ifile
print 'Changing extension from ' + ifile + 'to ' + ifile
print '\nStart to unzip ' + ifile
print " ..."
extract = zipfile.ZipFile(ifile)
extract.extractall('.')
print ifile + 'successfully extracted'
extract.close()
函数.py
def main(argv):
try:
opts, args = getopt.getopt(argv, "hi:o:d", ["help", "ifile=", "ofile="])
except getopt.GetoptError:
functions.usage()
sys.exit(2)
for opt, arg in opts:
if opt in ("-h", "--help"):
functions.usage()
sys.exit()
elif opt in '-d':
global _debug
elif opt in ("-i", "--ifile"):
global ifile
ifile = arg
elif opt in ("-o", "--ofile"):
global ofile
ofile = arg
functions.unzip(ifile)
if __name__ == "__main__":
main(sys.argv[2:])
import os
import zipfile
import sys
def usage():
print "\nHow to use warmaker.py"
print 'Usage: ' + sys.argv[0] + ' -i <inputfile> -o <outputfile> '
def unzip(ifile):
print 'Before' + ifile
ifile = os.path.splitext(ifile)[0] + ".zip"
print 'after' + ifile
print 'Changing extension from ' + ifile + 'to ' + ifile
print '\nStart to unzip ' + ifile
print " ..."
extract = zipfile.ZipFile(ifile)
extract.extractall('.')
print ifile + 'successfully extracted'
extract.close()
导入操作系统
进口拉链
导入系统
def用法():
打印“\n如何使用warmaker.py”
打印“用法:'+sys.argv[0]+'-i-o”
def解压缩(ifile):
打印“之前”+ifile
ifile=os.path.splitext(ifile)[0]+“.zip”
打印'after'+ifile
打印“将扩展名从“+ifile+”更改为“+ifile”
打印“\n开始解压”+ifile
打印“…”
extract=zipfile.zipfile(ifile)
extract.extractall('.'))
打印ifile+“已成功提取”
extract.close()
也许你能帮我
这是控制台上的输出:
root@osboxes:~/PycharmProjects/warmaker# python warmaker.py -i CS_A3.war
Before
after.zip
Changing extension from .zipto .zip
Start to unzip .zip
...
Traceback (most recent call last):
File "warmaker.py", line 33, in <module>
main(sys.argv[2:])
File "warmaker.py", line 30, in main
functions.unzip(ifile)
File "/root/PycharmProjects/warmaker/functions.py", line 17, in unzip
extract = zipfile.ZipFile(ifile)
File "/usr/lib/python2.7/zipfile.py", line 756, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 2] No such file or directory: '.zip'
root@osboxes:~/PycharmProjects/warmaker#python warmaker.py-i CS_A3.war
之前
after.zip
将扩展名从.zipto.zip更改为
开始解压
...
回溯(最近一次呼叫最后一次):
文件“warmaker.py”,第33行,在
main(sys.argv[2:])
文件“warmaker.py”,第30行,主
functions.unzip(ifile)
文件“/root/PycharmProjects/warmaker/functions.py”,第17行,解压缩
extract=zipfile.zipfile(ifile)
文件“/usr/lib/python2.7/zipfile.py”,第756行,在__
self.fp=open(文件,modeDict[mode])
IOError:[Errno 2]没有这样的文件或目录:'.zip'
如您所见,在单词“Before”之后必须有varibale“ifile”的值,但没有这是控制台上的输出:
root@osboxes:~/PycharmProjects/warmaker# python warmaker.py -i CS_A3.war
Before
after.zip
Changing extension from .zipto .zip
Start to unzip .zip
...
Traceback (most recent call last):
File "warmaker.py", line 33, in <module>
main(sys.argv[2:])
File "warmaker.py", line 30, in main
functions.unzip(ifile)
File "/root/PycharmProjects/warmaker/functions.py", line 17, in unzip
extract = zipfile.ZipFile(ifile)
File "/usr/lib/python2.7/zipfile.py", line 756, in __init__
self.fp = open(file, modeDict[mode])
IOError: [Errno 2] No such file or directory: '.zip'
root@osboxes:~/PycharmProjects/warmaker#python warmaker.py-i CS_A3.war
之前
after.zip
将扩展名从.zipto.zip更改为
开始解压
...
回溯(最近一次呼叫最后一次):
文件“warmaker.py”,第33行,在
main(sys.argv[2:])
文件“warmaker.py”,第30行,主
functions.unzip(ifile)
文件“/root/PycharmProjects/warmaker/functions.py”,第17行,解压缩
extract=zipfile.zipfile(ifile)
文件“/usr/lib/python2.7/zipfile.py”,第756行,在__
self.fp=open(文件,modeDict[mode])
IOError:[Errno 2]没有这样的文件或目录:'.zip'
如您所见,在单词“Before”之后必须有varibale“ifile”的值,但warmaker.py中没有,您有
if __name__ == "__main__":
main(sys.argv[2:])
换成
if __name__ == "__main__":
main(sys.argv[1:])
这些选项从sys.argv[1]开始
sys.argv[0]是Python文件的名称。在warmaker.py中,您有
if __name__ == "__main__":
main(sys.argv[2:])
换成
if __name__ == "__main__":
main(sys.argv[1:])
这些选项从sys.argv[1]开始
sys.argv[0]是Python文件的名称。我将编辑它以使用它(这是主要的api参考;它在顶部附近还有一个指向更适合初学者的教程的链接),而不是optparse,因为文档中说optparse不推荐使用
您已经设置好使用一个主函数&if uu name uu=='uuu main uu'习惯用法,这很好,但这里并不真正需要它,所以我在编辑中简化了内容。如果将warmaker.py代码与functions.py代码放在一个单独的文件(又称模块)中,那么您可能希望使用If _uname _u=='_umain uuu',这样您就可以导入函数,而不必使用warmaker.py主函数中运行的代码,但这样也可以使用w/out
温和派
函数.py
导入操作系统
进口拉链
导入系统
def用法():
打印“\n如何使用warmaker.py”
打印“用法:”
打印'python'+sys.argv[0]+'-i-o'
#请注意,在python中,如果连接一个字符串然后打印它,则必须自己添加空格字符
def解压(ifile,outdir='.'):
打印“解压缩”,ifile
prev_content=set(os.listdir(outdir))
打印“…”
使用zipfile.zipfile(ifile)作为efile:
efile.extractall(outdir)
添加内容=设置(os.listdir(outdir))-上一个内容
打印ifile,“已成功提取”
#默认情况下,对以逗号分隔的变量调用print会打印以空格分隔的变量
打印“提取内容:”
对于n,枚举中的名称(添加内容):
打印n+1,名称
另外,我将它改为可以指定输出目录而不是文件&我添加了一些代码来显示添加了哪些新文件/dir,正如我所想的那样。给出一个输出文件似乎与ZipFile上的文档所说的使用extractall方法可以做的事情不太匹配。如果这是一种仅对压缩的单个文件进行操作的自定义用法&需要以这种方式工作,则需要对functions.py进行大量更改
总的来说,对于一些编程新手来说,这是非常可靠的代码。很好的工作我会编辑它以使用它(这是主要的api参考;它在顶部附近还有一个指向更适合初学者的教程的链接),而不是optparse,因为文档中说optparse不推荐使用
您已经设置好使用一个主函数&if uu name uu=='uuu main uu'习惯用法,这很好,但这里并不真正需要它,所以我在编辑中简化了内容。如果将warmaker.py代码与functions.py代码放在一个单独的文件(又称模块)中,那么您可能希望使用If _uname _u=='_umain uuu',这样您就可以导入函数,而不必使用warmaker.py主函数中运行的代码,但这样也可以使用w/out
温和派
函数.py
导入操作系统
进口拉链
导入系统
def用法():
打印“\n如何使用warmaker.py”
打印“用法:”
打印'python'+sys.argv[0]+'-i-o'
#请注意,在python中,如果连接一个字符串然后打印它,则必须自己添加空格字符
def解压(ifile,outdir='.'):
打印“解压缩”,ifile
prev_content=set(os.listdir(outdir))
打印“…”
使用zipfile.zipfile(ifile)作为ef