Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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&;cmd)_Python_Cmd - Fatal编程技术网

执行行而不是打印(python&;cmd)

执行行而不是打印(python&;cmd),python,cmd,Python,Cmd,在过去的两个小时里一直在浏览互联网,但没有找到答案。Ridiculus,我知道。。。我会多写一点,也许其他人也会觉得这很有帮助 我想把每一个mailchimp活动保存为一个未经鼓动的(连续的)PDF。找到了完成此任务的伟大程序:。我所要做的就是在cmd中运行一个命令,看起来像这样 "C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm "www link" "

在过去的两个小时里一直在浏览互联网,但没有找到答案。Ridiculus,我知道。。。我会多写一点,也许其他人也会觉得这很有帮助

我想把每一个mailchimp活动保存为一个未经鼓动的(连续的)PDF。找到了完成此任务的伟大程序:。我所要做的就是在cmd中运行一个命令,看起来像这样

"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm "www link" "C:\Temp\test.pdf"
"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm https://mailchi.mp/61fadc2e06a7/nm9bhb5lc3-1575581 "C:\Users\gaspe\Desktop\Temp\2019-01-18 - KEPA VESELJA.pdf"
"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm https://mailchi.mp/6fc2f0ef4346/nm9bhb5lc3-1557633 "C:\Users\gaspe\Desktop\Temp\2018-11-22 - V NOV KORAK.pdf"
"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm https://mailchi.mp/9369428d0749/nm9bhb5lc3-1543093 "C:\Users\gaspe\Desktop\Temp\2018-10-08 - VPIS 2019-20.pdf"
这显然会产生非常长的连续PDF(10页),但我可以稍后使用Acobe Acrobat Pro对其进行批处理(裁剪、优化、arhchive)

我制作了一个csv文件,其中包含所有发送的活动列表。例如(最后三个):

然后我写了一个简短的python代码

import csv

code = """"C:\\Program Files\\wkhtmltopdf\\bin\\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm {povezava} "C:\\Users\\gaspe\\Desktop\\Temp\\{datum} - {naslov}.pdf\""""

with open("C:\\Users\\gaspe\\Desktop\\mailchimp\\seznam.csv", "r") as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    next(csvfile) #skipping the first row
    for row in reader:
        link = row[2]
        date = row[0]
        new_date = str(date[6:10]+"-"+date[3:5]+"-"+date[0:2])
        title = row[1].upper().replace('/','-').replace('!','').replace('?','')
        print(code.format(povezava=link, datum=new_date, naslov=title))
。。。它读取csv文件中的每一行并打印如下内容

"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm "www link" "C:\Temp\test.pdf"
"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm https://mailchi.mp/61fadc2e06a7/nm9bhb5lc3-1575581 "C:\Users\gaspe\Desktop\Temp\2019-01-18 - KEPA VESELJA.pdf"
"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm https://mailchi.mp/6fc2f0ef4346/nm9bhb5lc3-1557633 "C:\Users\gaspe\Desktop\Temp\2018-11-22 - V NOV KORAK.pdf"
"C:\Program Files\wkhtmltopdf\bin\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm https://mailchi.mp/9369428d0749/nm9bhb5lc3-1543093 "C:\Users\gaspe\Desktop\Temp\2018-10-08 - VPIS 2019-20.pdf"
现在最大的问题是:如何让cmd一行接一行地运行所有行,而不是仅仅打印出来?

我知道,我可以在cmd中复制和粘贴这些行,它会执行它们,但我非常希望学习如何以正确的方式执行:)


谢谢

您可以使用子流程模块从shell运行命令:

import csv
from subprocess import check_output

code = """"C:\\Program Files\\wkhtmltopdf\\bin\\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm {povezava} "C:\\Users\\gaspe\\Desktop\\Temp\\{datum} - {naslov}.pdf\""""

with open("C:\\Users\\gaspe\\Desktop\\mailchimp\\seznam.csv", "r") as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    next(csvfile) #skipping the first row
    for row in reader:
        link = row[2]
        date = row[0]
        new_date = str(date[6:10]+"-"+date[3:5]+"-"+date[0:2])
        title = row[1].upper().replace('/','-').replace('!','').replace('?','')
        cmd = code.format(povezava=link, datum=new_date, naslov=title)
        # print(cmd)
        check_output(cmd, shell=True)

参考:

您可以使用子流程模块从shell运行命令:

import csv
from subprocess import check_output

code = """"C:\\Program Files\\wkhtmltopdf\\bin\\"wkhtmltopdf -T 0 -B 0 --page-width 210mm --page-height 2970mm {povezava} "C:\\Users\\gaspe\\Desktop\\Temp\\{datum} - {naslov}.pdf\""""

with open("C:\\Users\\gaspe\\Desktop\\mailchimp\\seznam.csv", "r") as csvfile:
    reader = csv.reader(csvfile, delimiter=';')
    next(csvfile) #skipping the first row
    for row in reader:
        link = row[2]
        date = row[0]
        new_date = str(date[6:10]+"-"+date[3:5]+"-"+date[0:2])
        title = row[1].upper().replace('/','-').replace('!','').replace('?','')
        cmd = code.format(povezava=link, datum=new_date, naslov=title)
        # print(cmd)
        check_output(cmd, shell=True)

参考资料:

成功了!!!谢谢我仍然把我的print语句放在cmd语句之前,因为它可以显示当前正在处理的行。它工作了!!!谢谢我仍然将print语句放在cmd语句之前,因为它可以显示当前正在处理的行。