字符串到剪贴板,但没有新行?

RTS*_*lds 1 python python-3.x

在开发一个 python 项目时,我需要将字符串复制到剪贴板,以便用户根据输入在其他应用程序上使用。现在我有以下内容:

os.system(f"echo {phrase}| clip")
Run Code Online (Sandbox Code Playgroud)

目前它在 python 控制台中运行良好,但每当我执行 ctrl+v/右键单击+粘贴功能时,它都会粘贴 {phrase},但还会在其正下方包含一个新行,这会导致其他应用程序失效。

我尝试过在 {phrase} 上使用 str.strip() 和 str.rstrip() 但没有什么区别。任何帮助,将不胜感激。

AKX*_*AKX 6

问题是echo默认打印出换行符;添加-n开关以使其不出现。

但是,不要这样做:

os.system(f"echo -n {phrase} | clip")
Run Code Online (Sandbox Code Playgroud)

因为如果phrase包含恶意用户输入,那么您手中就有一个(远程)代码执行漏洞(请考虑| somethingevil)。

相反,使用subprocess.run()with ,其作用与通过管道从toinput相同,而且您根本不需要。echoclipecho

subprocess.run("clip", input=phrase, check=True, encoding="utf-8")
Run Code Online (Sandbox Code Playgroud)

更好的是,您可以使用该pyperclip模块:

pyperclip.copy('The text to be copied to the clipboard.')
Run Code Online (Sandbox Code Playgroud)