运行包含来自python scrip的多个字符串的命令行

2024-09-27 09:33:29 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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"'''

Tags: of命令行name脚本addparserinputraw
1条回答
网友
1楼 · 发布于 2024-09-27 09:33:29

docopt是处理程序接口的一种很好的方法,但是它会鼓励使用cover.py country=Japan site=Atsumi turbine=GE15.s这样的语法(如果需要标志的话)。你知道吗

根据我的经验docopt让你重新思考你的课程理念,它做什么以及如何实现这一点。例如,您可以尝试以下调用

cover.py cover.pdf  country=Japan  site=Atsumi  turbine=GE15.s
cover.py Japan Atsumi GE15.s

看来你的关系已经处理好了,但我也建议你:

  • 摆脱raw_input(),如果可以的话-不管怎样,您都有命令行参数
  • 将脚本拆分为做一件事的函数,例如准备tex文件和编写pdf文件
  • 使用if __name__ == '__main__':

相关问题 更多 >

    热门问题