0

我正在尝试这个但是得到以下代码行的错误:

p = subprocess.Popen(r"/bin/date -s "%s" " % self.sysdate)

错误:

  文件“date.py”,第 12 行
    p = subprocess.Popen(r"/bin/date -s "%s" " % self.sysdate)
                                             ^
SyntaxError:无效的语法

我也试过:

p = subprocess.Popen(r'/bin/date -s "%s" ' % self.sysdate)

仍然有错误。对此的任何帮助表示赞赏。

4

2 回答 2

4

Subprocess 更喜欢程序及其参数的字符串列表。尝试

subprocess.Popen(['/bin/date', '-s', '%s' % self.sysdate])
于 2012-08-22T21:58:51.497 回答
0

您将子进程 Popen args 作为字符串列表发送。此外,当您拆分字符串时,请使用模块功能,如shlex.split.

>>> date_str = '/bin/date -s "%s"' % '%HH:%MM'
>>> date_str
'/bin/date -s "%HH:%MM"'
>>> import shlex
>>> vals = shlex.split(date_str)
>>> vals
['/bin/date', '-s', '%HH:%MM']
>>> p = subprocess.Popen(vals)
于 2012-08-22T22:22:09.947 回答