首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从python脚本运行包含多个字符串的命令行

问从python脚本运行包含多个字符串的命令行
EN

Stack Overflow用户
提问于 2018-06-14 19:20:10
回答 1查看 239关注 0票数 0

你好,我正在尝试自动生成一个PDF,我已经制作了一个python脚本,生成想要的PDF,但要生成它,我必须从我的命令行调用my_cover.py -s "Atsumi" -t "GE1.5s" -co "Japan"。

有没有人知道在我的python脚本中调用这个命令行的简单方法。在脚本中,我将提示用户输入当前为"Atsumi“、"GE1.5s”和"Japan“的3个字符串,但这些字符串应随用户输入的内容而更改,因此也应在命令行调用中更改。任何帮助都是非常感谢的。

代码语言:javascript
复制
site_name = raw_input('Name of wind turbine site: ')
turbine_name = raw_input('Name of turbine type: ')
country_name = raw_input('Name of country location: ')

parser = argparse.ArgumentParser()
parser.add_argument('-s', '--site')
parser.add_argument('-t', '--turbine')
parser.add_argument('-c', '--country') 

args = parser.parse_args()

with open('cover.tex','w') as f:
    f.write(content%args.__dict__)

cmd = ['pdflatex', '-interaction', 'nonstopmode', 'cover.tex']
proc = subprocess.Popen(cmd)
proc.communicate()

retcode = proc.returncode
if not retcode == 0:
    os.unlink('cover.pdf')
    raise ValueError('Error {} executing command: {}'.format(retcode, ' '.join(cmd))) 

os.unlink('cover.tex')
os.unlink('cover.log')

"Code to run the command line goes here"
'''my_cover.py -s "Atsumi" -t "GE1.5s" -co "Japan"'''
EN

回答 1

Stack Overflow用户

发布于 2018-06-14 19:54:41

docopt是实现编程接口的一种很好的方法,但它会鼓励使用像cover.py --country=Japan --site=Atsumi --turbine=GE15.s这样的语法(如果你想要标志的话)。

在我的经验中,docopt让你重新思考你的程序思想,它做什么以及如何实现这一点。例如,您可以尝试像这样的调用

代码语言:javascript
复制
cover.py cover.pdf --country=Japan --site=Atsumi --turbine=GE15.s
cover.py Japan Atsumi GE15.s

看起来你的pdf已经被照顾好了,但我也建议:

  • 如果可以的话,在raw_input()上去掉-你可以使用命令行参数
  • 将脚本拆分到做一件事的函数,例如准备一个tex文件和写一个pdf文件
  • 使用pdf
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50856325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档