我可以使用 Jupiter 上的 linux 终端命令在名为“a”的列表中获得文件名列表,如下所示;
a=!find . -type f \! -name '*.*' -print
要使文件名不带扩展名,相应的命令在Linux终端上运行;
find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
但是我如何在 Jupyter 上运行这个命令,将其分配给上面的名称“a”。下面的代码不起作用。
a=!find . -type f -exec sh -c '
for pathname do
pathname=$( basename "$pathname" )
printf "%s\n" "${pathname%.*}"
done' sh {} +
我也尝试过更改行的缩进,但出现语法错误,或者什么也没有。从我在 Jupiter 上 for 循环命令行的搜索中,“!”也许应该在不同的位置。我怎样才能让它发挥作用?
答案1
如果有人有类似的问题,我会以不同的方式解决这个问题。我使用了命令行
a=!find . -type f \! -name '*.*' -print
这创建了一个带有扩展名的文件名列表。我从每个元素中删除了扩展。
files = [os.path.splitext(fname)[0] for fname in a]