我正在尝试从Python程序中运行一个文件map.py.我的代码如下:
import sh
exe = sh.Command("./path/to/map.py")
file_in = open("./path/to/inputfile") #inputfile has no extension
out_file = "./path/to/outputfile" #outputfile has no extension
exe(_in=file_in, _out=out_file)
运行此代码后,出现以下错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/vagrant/venv/lib/python3.5/site-packages/sh.py", line 1427, in __call__
return RunningCommand(cmd, call_args, stdin, stdout, stderr)
File "/vagrant/venv/lib/python3.5/site-packages/sh.py", line 774, in __init__
self.wait()
File "/vagrant/venv/lib/python3.5/site-packages/sh.py", line 792, in wait
self.handle_command_exit_code(exit_code)
File "/vagrant/venv/lib/python3.5/site-packages/sh.py", line 815, in handle_command_exit_code
raise exc
sh.ErrorReturnCode_255:
RAN: /vagrant/exec/word_count/map.py
STDOUT:
STDERR:
这是map.py将要做的一个虚拟示例:
print("hi")
虽然应该有一些标准的东西。该计划似乎并不适合我,我不知道为什么。我已经盯着这几个小时,我真的很感激你的帮助!
答案 0 :(得分:0)
如果要在当前的python shell中运行该代码,则应创建父文件夹模块并导入该文件并直接访问它。
如果您想在单独的流程中运行该文件并使用subprocess.check_output
获取结果答案 1 :(得分:0)
如果要从一个文件中读取并将其写入另一个文件。你可以做这样的事情
input_f = open(input, 'r')
output_f = open('workfile', 'w')
lines = input_f.readlines()
for i in lines:
#replicates whatever map.py does
output_f.write(new_line)
output_f.flush()
我认为这对你想要做的事情有用。