无法将参数从列表传递给脚本
Can't pass arguments to a script from a list
我正在尝试为文件夹中的每个 png
文件 运行 创建一个 python 脚本。 run.py
通过 --path_to_load
arg 获取一个 png 文件,然后 returns 将 png 文件处理成 path_to_save
arg。我设法将 png 文件放入 pngfiles
列表并设置 for 循环如下:
import glob
import os
import cv2
pngfiles = []
for pngfile in glob.glob('selected_faces/**/*.png', recursive=True):
pngfiles.append(pngfile) #returns 'selected_faces\pngfilename.ext' to a list
print (pngfiles[:2])
#['selected_faces\S005_001_00000001.png',
#'selected_faces\S005_001_00000011.png']
for file in pngfiles:
filename = file.split('\')[1]
print(filename)
#S005_001_00000001.png
#returns correct first file name
save_path = os.path.join('aligned_faces',filename) #returns save path
print(save_path)
#aligned_faces\S005_001_00000001.png
#returns correct save path
print(file)
#selected_faces\S005_001_00000001.png
#returns correct load path
%run run.py --mode 1 --path_to_load=file --path_to_save=save_path
运行 代码 returns OpenCV 断言错误!_src_empty() 可能是由于无法读取输入文件。
error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
但是 运行将代码退出循环让我们说仅针对单个文件,它按预期工作:
%run run.py --mode 1 --path_to_load="selected_faces\image1.png" --path_to_save="aligned_faces\image1.png"
我检查过 file
和 save_path
都是字符串,似乎没有问题。或者我可能明显遗漏了一些东西。
谢谢。
我觉得你用的 %run
不对:
In [406]: for x in ['one','tow','three']:
...: %run echo.py -x x
...:
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
In [407]: for x in ['one','tow','three']:
...: %run echo.py -x $x
...:
['echo.py', '-x', 'one']
['echo.py', '-x', 'tow']
['echo.py', '-x', 'three']
我正在尝试为文件夹中的每个 png
文件 运行 创建一个 python 脚本。 run.py
通过 --path_to_load
arg 获取一个 png 文件,然后 returns 将 png 文件处理成 path_to_save
arg。我设法将 png 文件放入 pngfiles
列表并设置 for 循环如下:
import glob
import os
import cv2
pngfiles = []
for pngfile in glob.glob('selected_faces/**/*.png', recursive=True):
pngfiles.append(pngfile) #returns 'selected_faces\pngfilename.ext' to a list
print (pngfiles[:2])
#['selected_faces\S005_001_00000001.png',
#'selected_faces\S005_001_00000011.png']
for file in pngfiles:
filename = file.split('\')[1]
print(filename)
#S005_001_00000001.png
#returns correct first file name
save_path = os.path.join('aligned_faces',filename) #returns save path
print(save_path)
#aligned_faces\S005_001_00000001.png
#returns correct save path
print(file)
#selected_faces\S005_001_00000001.png
#returns correct load path
%run run.py --mode 1 --path_to_load=file --path_to_save=save_path
运行 代码 returns OpenCV 断言错误!_src_empty() 可能是由于无法读取输入文件。
error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'
但是 运行将代码退出循环让我们说仅针对单个文件,它按预期工作:
%run run.py --mode 1 --path_to_load="selected_faces\image1.png" --path_to_save="aligned_faces\image1.png"
我检查过 file
和 save_path
都是字符串,似乎没有问题。或者我可能明显遗漏了一些东西。
谢谢。
我觉得你用的 %run
不对:
In [406]: for x in ['one','tow','three']:
...: %run echo.py -x x
...:
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
In [407]: for x in ['one','tow','three']:
...: %run echo.py -x $x
...:
['echo.py', '-x', 'one']
['echo.py', '-x', 'tow']
['echo.py', '-x', 'three']