我正在尝试将一些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")