Joh*_*ohn 5 python command-line argparse python-3.x
我想用 python 编写一个脚本,然后从命令行运行它。调用脚本test.py并运行它的命令是:
python3 test.py John Jackson
Run Code Online (Sandbox Code Playgroud)
这是预期的输出:
John Jackson
Run Code Online (Sandbox Code Playgroud)
这是我制作的 python 脚本:
class person:
def __init__(self, first, last):
self.firstname = first
self.lastname = last
def get_first(self):
return self.firstname
def get_last(self):
return self.lastname
import argparse
def main():
parser = argparse.ArgumentParser()
parser.add_argument('first')
parser.add_argument('last')
args = parser.parse_args()
c1 = person(args.first, args.last)
print(c1)
Run Code Online (Sandbox Code Playgroud)
但问题是,当我使用上述命令从命令行运行脚本时,它什么也不返回。您知道如何修复它并获得预期的输出吗?
您定义了main()函数但没有调用它。
将其添加到脚本末尾:
\n\nif __name__ == "__main__":\n main()\nRun Code Online (Sandbox Code Playgroud)\n\n看看有什么if __name__ == \xe2\x80\x9c__main__\xe2\x80\x9d:作用?。
然后c1是person实例,它将打印:
$ python3 test.py John Jackson\n<__main__.person object at 0x104907ef0>\nRun Code Online (Sandbox Code Playgroud)\n\n您需要调用get_first()并get_last()以获得正确的输出:
print(c1.get_first(), c1.get_last())\nRun Code Online (Sandbox Code Playgroud)\n
我不确定您是否在运行脚本时调用主函数。
添加
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
并重写__str__person 类的函数以打印名字和姓氏,同时将类作为参数传递给print.
def __str__(self):
return self.firstname + ' ' + self.lastname
Run Code Online (Sandbox Code Playgroud)
整个代码是这样的
import argparse
class person:
def __init__(self, first, last):
self.firstname = first
self.lastname = last
def get_first(self):
return self.firstname
def get_last(self):
return self.lastname
def __str__(self):
return self.firstname + ' ' + self.lastname
def main():
parser = argparse.ArgumentParser()
parser.add_argument('first')
parser.add_argument('last')
args = parser.parse_args()
c1 = person(args.first, args.last)
print(c1)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15432 次 |
| 最近记录: |