声明调用模板文件python27的路径

时间:2018-03-06 06:43:28

标签: python python-2.7

我尝试使用各种声明来尝试调用模板文件但由于某种原因,脚本无法从指定的位置选择模板并将报告内容加载到模板,然后将其导出为pdf格式。 我在此附上的代码:

 `#Build the html report using the html template and save to the set location
        output_from_parsed_template =  buildTemplate()
        with open(r"C:\python_report_scripts\anram_report.html","wb") as fh:
            fh.write(output_from_parsed_template)

        #Convert html to pdf
        subprocess.call('C:\omniformat\html2pdf995.exe r"C:\python_report_scripts\anram_report.html" r"C:\ANRAM_Requests\Working_folder\\'+sectionName+'.pdf"')

#Run a summary report when there is at least 1 section in the section list
if len(sectionInfo)>1:

    #Flag that this is a summary report
    summary = 1

    #Generate the Existing Map image
    MapExisting(summary)

    #Generate the Existing Risk Graph image
    RiskgraphExisting(summary)

    #Generate the New Map Image
    MapNew(summary)

    #Generate the New Risk Graph image
    RiskgraphNew(summary)

    #Generate the tabular results for the report
    populateResults(summary)

    #Indicate that the report is a summary, which then forms the report title
    #global sectionName
    sectionName = 'SUMMARY - '+sectionName

    #Build the html report using the html template and save to the set location
    output_from_parsed_template =  buildTemplate()
    with open(r"C:\python_report_scripts\anram_report.html","wb") as fh:
        fh.write(output_from_parsed_template)

    #Convert html to pdf
    subprocess.call('C:\omniformat\html2pdf995.exe r"C:\python_report_scripts\anram_report.html" r"C:\ANRAM_Requests\Working_folder\\'+sectionName+'.pdf"')`

我正确地宣布它吗?

请指教,

1 个答案:

答案 0 :(得分:0)

这条线看起来很奇怪:

#Convert html to pdf
subprocess.call('C:\omniformat\html2pdf995.exe r"C:\python_report_scripts\anram_report.html" r"C:\ANRAM_Requests\Working_folder\\'+sectionName+'.pdf"')`

你似乎把Python引用,Python原始字符串与shell引用混合在一起,你仍然有一些双反斜杠......

我建议:

  • 使用subprocess.check_call代替,如果运行该命令有任何错误,Python将报告。
  • 传递一个列表,而不是一个字符串,这样就更清楚哪个参数是哪个,而且你不太依赖于shell引用和单词拆分。
  • 始终如一地使用原始字符串(r'...'r"...",其中任何一个都可以。)
  • 使用os.path.join加入路径!

所以,把它们放在一起,试试这个:

# Convert html to pdf
subprocess.check_call([
    r'C:\omniformat\html2pdf995.exe',
    r'C:\python_report_scripts\anram_report.html',
    os.path.join(r'C:\ANRAM_Requests\Working_folder', sectionName + '.pdf')
])

我希望这可以解决您所看到的问题......或者,如果没有,至少会为您提供更有意义的错误消息,您可以采取行动。