ctrl-O 只是一个字符,与其他字符相同。您可以通过编写'\x0f'
(或者,在 Python 3 中,b'\x0f'
)来发送它。
但是,这可能对您没有任何好处。大多数在终端中提供交互式 GUI 的程序,例如nano
,不能由标准输入驱动。他们需要控制终端,为此,他们将检查该标准输入isatty
,然后检查tcsetattr
它,或者只是打开/dev/tty
,
os.openpty
您可以通过使用、os.forkpty
或来创建伪终端来解决此问题pty
。
但是使用像pexpect
处理交互式程序、GUI 或其他方式的库通常更容易。
甚至更容易不尝试驱动交互式程序。例如,与nano
,不同的是,ed
它被设计为由脚本以“批处理模式”驱动,sed
甚至更是如此。
当您尝试做一些可以直接在 Python 中轻松完成的事情时,根本不尝试驱动程序甚至更容易。将某些内容附加到文件的最简单方法是open
在'a'
模式中添加内容并添加到文件中write
。根本不需要外部程序。例如:
new_line = input('What do you want to add?')
with open(fname, 'a') as f:
f.write(new_line)
如果您使用的唯一原因nano
是因为您需要一些东西sudo
……那真的没有理由。您可以sudo
使用其他任何东西——比如sed
,或其他 Python 脚本——同样容易。使用nano
只是无缘无故地让自己变得更难。
这里最大的问题是:为什么你有一个 Python 脚本不可写的文件,但你希望任意远程用户能够附加到该文件?这听起来像是一个非常糟糕的系统设计。您使文件不可写,因为您想限制普通用户修改它们;如果您希望您的 Python 脚本能够代表您的远程用户修改它,为什么它不属于运行该脚本的同一用户?