加入PDF呼叫加入.py另一个python脚本中的OSX脚本并传递参数

2024-10-02 14:16:27 发布

您现在位置:Python中文网/ 问答频道 /正文

请记住我对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调用它,但是我没有找到一种方法来“推送”其中所有必需的参数,所以我坚持使用子流程调用是的。你知道吗

任何关于如何正确地为我的脚本提供这些参数的想法都将不胜感激。你知道吗


Tags: 文件path方法pyimport脚本参数pdf
1条回答
网友
1楼 · 发布于 2024-10-02 14:16:27

你能试试join(str(i)for i in pdfstomerge)而不是join(map(str,pdfstomerge)吗。你知道吗

这将解决你的疑问:-)(希望)有一个愉快的一天!你知道吗

try:
   liststr = ','join(str(i) for i in pdfstomerge)
   print(liststr)
except TypeError:
   print(pdfstomerge) # to check what you have in the list of pdfs

此外,我不确定是否必须以如下字符串形式传递值:

stringToCall = '[' + liststr + ']'

希望你能尽快找到解决办法

相关问题 更多 >

    热门问题