Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行包含python脚本中多个字符串的命令行_Python_Command Line_Pdf Generation - Fatal编程技术网

运行包含python脚本中多个字符串的命令行

运行包含python脚本中多个字符串的命令行,python,command-line,pdf-generation,Python,Command Line,Pdf Generation,您好,我正在尝试自动生成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

您好,我正在尝试自动生成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"'''
是一种很好的程序接口方式,但它会鼓励使用类似于
cover.py--country=Japan--site=Atsumi--turbour=GE15.s的语法(如果需要标志的话)

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

cover.py cover.pdf --country=Japan --site=Atsumi --turbine=GE15.s
cover.py Japan Atsumi GE15.s
看来你的pdf格式已经处理好了,但我也建议:

  • 如果可以的话,摆脱
    raw\u input()
    ——反正你有命令行参数
  • 将脚本拆分为做一件事的函数,例如准备tex文件和编写pdf文件
  • 使用
    如果

使用
subprocess.run
/
subprocess.check_call
好的,当我想用多个字符串调用它时,你能举一个语法的简单例子吗?
cmd=['pdflatex','-interaction','nonstopmode',cover.tex']proc=subprocess.Popen(cmd)
:调整此代码以运行python脚本。您可能需要添加
python
作为第一个参数
content%args.\uuu dict\uuu
如何工作?因此类似
subprocess.Popen(['my\u cover.py','-s',str(site\u name),'-t',str str(turbour\u name),'-c',str country\u name)
?我不完全确定
content%args.\uu dict\uu>如何工作。我从一些示例中使用了它