我正在尝试将一些pdf转换成jpg,并使用pdf2jpg来完成这项工作。
我运行的代码是:

inputPath = sys.argv[1].replace("\\", "/")
print(inputPath)

# Get parent folder of the file
parentFolder = "/".join(inputPath.split("/")[:-1])
print(parentFolder)

# Convert pdf to jpg in same folder
result = pdf2jpg.convert_pdf2jpg(inputPath, parentFolder, pages="1")
print(result)

当我运行这个时,得到的错误是:
NotADirectoryError: [WinError 267] The directory name is invalid: 'C:/Users/Username/Desktop\\test.pdf'

奇怪的是,当我运行最后两行注释掉的相同代码时,我得到:
C:/Users/Username/Desktop/test.pdf
C:/Users/Username/Desktop

看起来inputpath本身被正确地转换为正斜杠,但是当被pdf2jpg引用时,它又被还原为反斜杠。
eta:改为反斜杠而不是正斜杠,并使用原始文字。代码如下:
inputPath = sys.argv[1]
inputPath_raw = r'%s'%inputPath
print(inputPath_raw)

parentFolder = chr(92).join(inputPath_raw.split(chr(92))[:-1])
print(parentFolder)

result = pdf2jpg.convert_pdf2jpg(inputPath_raw, parentFolder, pages="1")
print(result)

然后我给它输入:
convert.py "C:\Users\Username\Desktop\test.pdf"

我看到的错误是:
NotADirectoryError: [WinError 267] The directory name is invalid: 'C:\\Users\\Username\\Desktop\\test.pdf'

打印变量仍然会给出正确的输出作为文件路径,只是这部分无法识别路径。

最佳答案

更新:
问题是pdf2jpg试图创建一个目录,以outputpath中的pdf文件命名。转换文件test.pdf时,它将(尝试)在指定的outputpath中创建一个名为\test.pdf的目录。
由于源目录和目标目录相同,它将失败,因为在同一路径中有一个文件和一个同名的目录test.pdf是一个文件系统限制。
下面是一个在inputpath+\pdf2jpg目录中创建输出jpg的测试,它将工作:

# -*- coding: utf-8 -*-
import os
import sys
from pdf2jpg import pdf2jpg

source = sys.argv[1]
destination = os.path.dirname(source)+"\pdf2jpg"

try:
    os.mkdir(destination)
except FileExistsError:
    # pdf2jpg directory existing
    pass

result = pdf2jpg.convert_pdf2jpg(source, destination, pages="ALL")

07-26 04:19