有没有办法在Jupyter笔记本单元中使用单击库?我想在笔记本中将标志传递给我的Jupyter笔记本代码,以使其更平滑地过渡到独立脚本。例如,从Jupyter笔记本单元使用OptionParser:
from optparse import OptionParser
import sys
def main():
parser = OptionParser()
parser.add_option('-f', '--fake',
default='False',
help='Fake data')
(options,args) = parser.parse_args()
print('options:{} args: {}'.format(options, args))
if options.fake:
print('Fake detected')
def test_args():
print('hello')
if __name__ == '__main__':
sys.argv = ['--fake', 'True' '--help']
main()
输出:options:{'fake':'False'} args:['True--help']检测到伪造
使用点击库,我得到一连串的错误。我从Jupyter笔记本电脑单元运行了以下代码:
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
hello()
Ouput(截断):
UnsupportedOperation Traceback (most recent call last)
<ipython-input-6-ad31be7bf0fe> in <module>()
12 if __name__ == '__main__':
13 sys.argv = ['--count', '3']
---> 14 hello()
~/.local/lib/python3.6/site-packages/click/core.py in __call__(self, *args, **kwargs)
720 def __call__(self, *args, **kwargs):
721 """Alias for :meth:`main`."""
--> 722 return self.main(*args, **kwargs)
723
724
...
257
258 if message:
--> 259 file.write(message)
260 file.flush()
261
UnsupportedOperation: not writable
您可以使用%%python
magic命令来启动新的Python流程:
%%python
import sys
import click
@click.command()
@click.option('--count', default=1, help='Number of greetings.')
@click.option('--name', prompt='Your name',
help='The person to greet.')
def hello(count, name):
"""Simple program that greets NAME for a total of COUNT times."""
with open('echo.txt', 'w') as fobj:
for x in range(count):
click.echo('Hello %s!' % name)
if __name__ == '__main__':
# first element is the script name, use empty string instead
sys.argv = ['', '--name', 'Max', '--count', '3']
hello()
输出:
Hello Max!
Hello Max!
Hello Max!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句