我必须运行确切的命令:
python3 main.py flip pattern.ppm > flippedpattern.ppm
根据以下代码:
^{pr2}$我有一个ppm文件,我试图使用另一个模块来操作它,但它总是告诉我系统argv[4] 将其分配给变量“outputFile”时超出范围
对于flip命令,执行的代码基本上应该是这样的
method = "flip"
method = read_ppm("pattern.ppm")
f.write(method.flip())
在visualstudio中使用repl确实可以获得成功,但是当我试图从命令行通过主模块运行它时,它就不起作用了。为什么会这样?“>;”字符是否会干扰系统argv还是我犯了一个看不见的明显的计数错误?在
else语句将解释输入不被捕获,而只是使用输入进行打印
python3 main.py flip pattern.ppm
没有任何文件重定向。在
>;之后的参数不是传递给python的命令行的一部分。它是shell将标准输出写入的文件。例如,
print "Hello"
将向翻转模式.ppm. 在如果你想的话翻转模式.ppm要成为第四个命令行参数,只需在调用中省略>。(然后,标准输出将写入屏幕。)
编辑:根据修改后的描述,您可以编写
sys.stdout.write(method.flip())
。它与print(method.flip())
的唯一区别是print在字符串的末尾添加了一个换行符,而.write没有我不确定visualstudio是如何工作的,但是如果它与
argv[4]
一起工作,它可能会像解释另一个参数一样解释脚本名称后面的每个单词(因为对“>;”进行特殊解释并不是bash)。在因此,要使它在bash中工作,您可能应该将代码中的
argv[4]
更改为argv[3]
,并将输出文件作为另一个参数传递,而不是重定向:,或者保持代码不变,并添加“伪”第三个参数,以便输出文件将是第四个,例如,强制它将“>;”也视为常规参数:
^{pr2}$相关问题 更多 >
编程相关推荐