我正在修改一个脚本,该脚本当前将其他脚本作为子进程调用。我没有这样做,而是在主脚本中创建函数来执行以前由子进程执行的任务
其中一个子流程要求将变量传递给它,就像从命令行传递一样
下面是调用子流程的代码:
subprocess.call("python cleaner.py < ./results/Temp.csv
>./results/result.csv", shell=True)
os.remove("./results/Temp.csv")
我想做的是:
def cleaner():
#working code that cleans certain characters out of selected
#.csv files.
function("./results/Temp.csv > ./results/result.csv", shell=True)
os.remove("./resluts/Temp.csv")
理想情况下,我希望使用子流程中的现有代码,但如果这样可以更容易地解决问题,我愿意更改它。代码如下:
from __future__ import print_function
from sys import stdin
print(next(stdin) , end='')
for line in stdin:
toks = [tok.replace("\'",""
).replace("text:u","").replace("number:", "") for tok in
line.split()]
print(' '.join(toks))
脚本应该清理指定的临时文件,将清理后的版本复制到结果文件,然后删除临时文件。当前它作为子进程工作,但当我尝试将其作为函数运行时就不行了。我错误地传递了变量,它抛出了以下错误:
'TypeError: cleaner() takes no arguments (1 given)'
您需要将参数定义为函数的一部分
阅读更多here
相关问题 更多 >
编程相关推荐