我使用os.walk()
and搜索了一些子文件夹中的 python 脚本endswith(file.py)
,并将它们放在一个列表中。现在我正在尝试执行它们。所以我有一个类型的列表:
pylist = ['./1/file1.py', './2/file2.py', ...]
我尝试使用 for 循环执行它们:
for i in range(len(pylist)):
%run pylist[i]
还有(我使用的是jupyter笔记本)
for i in range(len(pylist)):
!python pylist[i]
但在这两种情况下,它都找不到文件pylist[i].py
,所以它没有获取列表的内容。我也试过
for i in range(len(pylist)):
execfile(pylist[i])
但这给了我一个
indexError:列表索引超出范围
使用其中一个 python 文件,如果我直接转到该文件夹并执行该文件,我不会得到它。另一个测试是 using subprocess
,我得到了一个权限错误:
OSError: [Errno 13] 权限被拒绝
我怀疑这可能是因为 .py 文件没有可执行权限。但是,使每个文件成为可执行文件是另一个问题。
在列表中执行 python 文件的正确方法是什么?
编辑:更具体
当转到我的 jupyter notebook 上的特定目录并将文件执行为
!python file1.py
它工作正常,但使用列表时我得到
for fname in pylist:
!python fname
python:无法打开文件'fname':[Errno 2]没有这样的文件或目录
所以看起来python没有读取列表中的元素,而是试图执行fname
。我检查os.path.abspath(fname)
了路径是否正确。