在开发一个 python 项目时,我需要将字符串复制到剪贴板,以便用户根据输入在其他应用程序上使用。现在我有以下内容:
os.system(f"echo {phrase}| clip")
Run Code Online (Sandbox Code Playgroud)
目前它在 python 控制台中运行良好,但每当我执行 ctrl+v/右键单击+粘贴功能时,它都会粘贴 {phrase},但还会在其正下方包含一个新行,这会导致其他应用程序失效。
我尝试过在 {phrase} 上使用 str.strip() 和 str.rstrip() 但没有什么区别。任何帮助,将不胜感激。
问题是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)
| 归档时间: |
|
| 查看次数: |
950 次 |
| 最近记录: |