Python Can';t从列表中向脚本传递参数

Python Can';t从列表中向脚本传递参数,python,ipython,argparse,Python,Ipython,Argparse,我正在尝试为文件夹中的每个png文件运行python脚本run.py通过--path\u-to-loadarg获取png文件,并将处理后的png文件返回到path\u-to-savearg。我设法将png文件放入pngfiles列表中,并设置for循环,如下所示: import glob import os import cv2 pngfiles = [] for pngfile in glob.glob('selected_faces/**/*.png', recursive=True):

我正在尝试为文件夹中的每个
png
文件运行python脚本
run.py
通过
--path\u-to-load
arg获取png文件,并将处理后的png文件返回到
path\u-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
运行代码会返回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"
我检查出
文件
保存路径
都是字符串,似乎没有问题。或者我显然错过了什么


谢谢。

我认为您没有使用
%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']

为什么要从另一个python文件运行python文件?在循环中遍历所有PNG文件时,您可以读取图像,也可以将其保存在其他文件夹中(在同一脚本中,不使用
run.py
)。您确定获得了正确的
文件名吗?如果
file='selected\u faces\\subdir\\image.png'
filename=file.split('\\')[1]
将返回
subdir
。它不应该是
filename=file.split('\\')[-1]
或者更好的
import-ntpath
filename=ntpath.basename(file)
%run
不是有效的Python;这是一个iPython/Jupyter魔术命令。无论如何,脚本似乎没有正确接收输入文件。由于它们是相对路径,我建议首先检查循环中
file
的每个值,甚至检查当前路径
os.getcwd()
。是否可以添加
print
来验证它接收到的文件名?我们从
%run
猜测这是一个
ipython
会话。你搞定了,老板。谢谢