【问题标题】:Can I use a %run inside of a for loop?我可以在 for 循环中使用 %run 吗?
【发布时间】:2021-11-08 05:03:03
【问题描述】:

我正在尝试使用 img 到 ascii 生成器(python 代码),我想使用 for 循环为单个输入生成多个具有不同 img 分辨率的输出。

img_src = 'data/input/'
img_dest = 'data/output/'

for image in os.listdir(img_src):
    for size in range(100,1000,100):
        input_name = img_src + image
        output_name = img_dest + image.split('.')[0] + '_out_' + str(size) + '.jpg'
        %run img2img.py --input input_name --output output_name --num_cols size

我正在 jupyter 笔记本中执行类似上述代码的操作(可能不是最好的,但我喜欢它用于实验)。 但是我怀疑我是否真的可以在 for 循环中使用 %run 因为它是用来调用 bash 命令的,但我还需要使用 -- 选项。

谁有更好的解决方案? 提前谢谢你:)

【问题讨论】:

  • 为什么不import img2img 使用那里的代码?
  • 我不知道如何使用 -- 带有导入的选项
  • img2img.py 里面有一个你想调用的函数——对吧?该函数接受参数。看看函数是什么,参数是什么
  • 没那么简单,好奇的看一下github.com/uvipen/ASCII-generator/blob/master/img2img.py
  • 您可以改用subprocess 模块。 %run 的问题在于它不是 python。此代码在 jupyter 之外无法工作。

标签: python jupyter


【解决方案1】:

使用仅打印 sys.argv 的简单脚本:

In [61]: cat echo.py
import sys
print(sys.argv)

一个电话:

In [62]: %run echo.py foo bar
['echo.py', 'foo', 'bar']

在一个循环中。 $ 用于将变量的当前值放入运行字符串中。我认为$ 的这种使用是一个通用的jupyter 魔术功能,但我没有使用太多。 %run 还有很多我没玩过的选项。

In [63]: arg = ['--one 2'.split(), '--tow 3'.split()]
    ...: for a,b in arg:
    ...:    %run echo.py $a $b
    ...: 
['echo.py', '--one', '2']
['echo.py', '--tow', '3']

https://stackoverflow.com/a/14411126/901925工作

In [75]: arg = ['--one 2'.split(), '--tow 3'.split()]
    ...: for a in arg:
    ...:    %run echo.py {a[0]} {a[1]} $a
    ...: 
    ...: 
['echo.py', '--one', '2', '[--one,', '2]']
['echo.py', '--tow', '3', '[--tow,', '3]']

https://ipython.readthedocs.io/en/stable/interactive/reference.html#system-shell-access

【讨论】:

    猜你喜欢
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-26
    相关资源
    最近更新 更多