簡體   English   中英

Python腳本中的Sips命令不起作用-“錯誤4:未指定文件”和“不是有效文件-正在跳過”

[英]Sips command in a Python script is not working - “Error 4: no file was specified” and “not a valid file - skipping”

嘗試通過Python腳本調整某些圖像的大小(僅寬度)。 這是一個Python腳本:

# -*- coding: utf-8 -*-

import subprocess
import os


# New width
new_width = '200'

# Create for converted images
create_directory_out = subprocess.run(['mkdir', '-p', './Result'])

# Directory with started images
directory_source = 'Source'

#  Directory with converted images
directory_out = 'Result'

# get list of started images to variable files
files = os.listdir(directory_source)

# Filtre by mask .jpg to variable images
images = filter(lambda x: x.endswith('.jpg'), files)

img_list = list(images)

# Loop of convert images by sips
for file_name in img_list:
    print(file_name)
    subprocess.run(['sips', '--resampleWidth', 'new_width', '--out', './directory_out/file_name', './directory_source/file_name', ])

我收到一個錯誤:

face-04.jpg
Warning: ./directory_source/file_name not a valid file - skipping
Error 4: no file was specified
Try 'sips --help' for help using this tool
face-04.jpg

但是終端中的sips命令可以正常工作:

sips --resampleWidth 200 --out ./Result/face-04.jpg ./Source/face-04.jpg 

還有什么可能出問題了?

先謝謝您的幫助。

您正在將文字與變量混合在一起:

subprocess.run(['sips', '--resampleWidth', 'new_width', '--out', './directory_out/file_name', './directory_source/file_name', ])

嘗試從字面上訪問'./directory_out/file_name'

您需要實際使用變量並join目錄和文件名:

subprocess.run(['sips', '--resampleWidth', 'new_width', '--out', os.path.join(directory_out,file_name), os.path.join(directory_source,file_name)])

在旁邊:

create_directory_out = subprocess.run(['mkdir', '-p', './Result'])

可以替換為本地python調用:

os.makedirs(directory_out)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM