您好,我正在尝试使用Popen打开.py并将arg(如有必要)传递给它。
例子:
python mytool.py --first-arg player1 player2 player3 --second-arg 10 --tenth-arg 150
我正在使用tkinter按钮启动此功能,它在Windows上使用python 3.7均可运行 但不是在Linux上,出现此错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.7/tkinter/__init__.py", line 1705, in __call__
return self.func(*args)
File "mytool.py", line 131, in start
obj = subprocess.Popen([self.Tipvar.get(), 'mytool.py', *filter(lambda x: bool(x[1]) ,(first_arg, second_arg, third_arg, fourth_arg, fifth_arg, sixth_arg, seventh_arg, eighth_arg, ninth_arg, tenth_arg, eleventh_arg, twelfth_arg))])
File "/usr/lib/python3.7/subprocess.py", line 775, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.7/subprocess.py", line 1453, in _execute_child
restore_signals, start_new_session, preexec_fn)
TypeError: expected str, bytes or os.PathLike object, not tuple
我正在使用的代码是这样的:
def start(self):
first_arg = ("--first-arg ", self.first_arg_entry.get())
second_arg = ("--second-arg ", self.second_arg_entry.get())
third_arg = ("--third_arg-arg ", self.third_arg_entry.get())
fourth_arg = ("--fourth-arg ", self.fourth_arg_entry.get())
fifth_arg = ("--fifth-arg ", self.fifth_arg_entry.get())
sixth_arg = ("--sixth-arg ", self.sixth_arg_entry.get())
seventh_arg = ("--seventh-arg ", self.seventh_arg_entry.get())
eighth_arg = ("--eighth-arg ", self.eighth_arg_entry.get())
ninth_arg = ("--ninth-arg ", self.ninth_arg_entry.get())
tenth_arg = ("--tenth-arg ", self.tenth_arg_entry.get())
eleventh_arg = ("--eleventh-arg ", self.eleventh_arg_entry.get())
twelfth_arg = ("--twelfth-arg ", self.twelfth_arg_entry.get())
thirteenth_arg = (self.vold.get())
print ("Tool started in terminal")
self.bt_stop.config(state=NORMAL)
self.disable_buttons()
global obj
if self.vold.get() == "":
obj = subprocess.Popen([self.Tipvar.get(), 'mytool.py', *filter(lambda x: bool(x[1]) ,(first_arg, second_arg, third_arg, fourth_arg, fifth_arg, sixth_arg, seventh_arg, eighth_arg, ninth_arg, tenth_arg, eleventh_arg, twelfth_arg))])
else:
obj = subprocess.Popen([self.Tipvar.get(), 'myool.py', *filter(lambda x: bool(x[1]) ,(first_arg, second_arg, third_arg, fourth_arg, fifth_arg, sixth_arg, seventh_arg, eighth_arg, ninth_arg, tenth_arg, eleventh_arg, twelfth_arg, thirteenth_arg))])
我在做什么错?在Linux / Windows上可以做什么?
希望你能帮助我。