请记住我对python很陌生。你知道吗
我一直在尝试编写一个python脚本,其中包括使用加入.pyOSX中已经存在Python脚本(参见https://apple.stackexchange.com/a/99218),用于合并特定文件夹中的pdf文件。你知道吗
该脚本的工作方式是提供以下参数:
join.py -o OutputDir/Outputfilename InputDir/*.pdf
在shell中时。
这将获取输入文件名的所有PDF并合并它们。我已经用shell脚本成功地做到了这一点,但是尝试用python运行它时,我并没有用我尝试过的任何方法使它获得所有的pdf。它总是拒绝处理文件列表,只需要一个字符串。你知道吗
我的最新剧本:
import sys
sys.path.insert(0, '/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/')
pdfInputDir = os.path.join (sortsdir, expTitle, "PDFs")
print(pdfInputDir)
pdfstomerge = []
for root, dirs, files in os.walk(pdfInputDir):
pdfstomerge += glob.glob(os.path.join(root, '*.pdf'))
print(pdfstomerge) #i verify the pdfs are the ones i want
from subprocess import call
call(["/System/Library/Automator/Combine PDF Pages.action/Contents/Resources/join.py", "-o", os.path.join(pdfInputDir, "output.pdf"), ''.join(map(str, pdfstomerge))])
###
###
每次我运行它我都会得到一个输出.pdf正确产生的是空的。为了验证我所做的工作是否正常,我将*.pdf与目录中的一个pdf文件名进行了切换,并生成了一个输出.pdf有了这个文件,意味着我走上了正确的道路,我只是想不出一个方法来提供所有必要的PDF文件,而不是一个。你知道吗
我不知道我做错了什么,特别是因为上面的“命令”在终端工作。我尝试过不同的方法,包括os.path.join(pdfInputDir, "*.pdf")
、re'match和fnmatch,但都不起作用-我通常会遇到以下错误:
TypeError: Can't convert 'list' object to str implicitly
(可能是我写错了)。你知道吗
另外,我很确定我可以将它作为python模块运行,而不是用subprocess调用它,但是我没有找到一种方法来“推送”其中所有必需的参数,所以我坚持使用子流程调用是的。你知道吗
任何关于如何正确地为我的脚本提供这些参数的想法都将不胜感激。你知道吗
你能试试join(str(i)for i in pdfstomerge)而不是join(map(str,pdfstomerge)吗。你知道吗
这将解决你的疑问:-)(希望)有一个愉快的一天!你知道吗
此外,我不确定是否必须以如下字符串形式传递值:
希望你能尽快找到解决办法
相关问题 更多 >
编程相关推荐