我正在修改一个脚本,该脚本当前将其他脚本称为子进程。而不是这样做,我在主脚本内部创建函数来执行以前由子流程执行的任务。
其中一个子过程要求像在命令行中那样将变量传递给它。
以下是调用子流程的代码:
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)'
答案 0 :(得分:0)
您需要将参数定义为函数的一部分。
def cleaner(argument1):
#working code that cleans certain characters out of selected
#.csv files.
了解更多here。