执行行而不是打印(python&;cmd)
在过去的两个小时里一直在浏览互联网,但没有找到答案。Ridiculus,我知道。。。我会多写一点,也许其他人也会觉得这很有帮助 我想把每一个mailchimp活动保存为一个未经鼓动的(连续的)PDF。找到了完成此任务的伟大程序:。我所要做的就是在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" "
"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语句之前,因为它可以显示当前正在处理的行。