2017-01-29 2 views
0

일부 이미지의 크기를 파이썬 스크립트로 변경하려고 시도했습니다.Python 스크립트의 Sips 명령이 작동하지 않습니다. - "오류 4 : 파일을 지정하지 않았습니다."와 "유효한 파일을 건너 뛰지 않습니다."

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 

을 갈 수있는 다른 무엇

# -*- 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', ]) 

나는 오류가 발생 : 이것은 파이썬 스크립트입니다?

도움을 미리 감사드립니다.

답변

1

당신은 변수와 리터럴을 혼합하고 있습니다 :

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

시도가 그대로 './directory_out/file_name'에 액세스 할 수! 이외에도

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']) 

네이티브 파이썬 호출에 의해 대체 될 수 :

os.makedirs(directory_out) 

실제로 사용 당신의 변수와 join 디렉토리 & 파일 이름을 필요

+0

고맙습니다. 장 프랑수아. –

+0

그 답을 수락 할 수 있습니다. –