关于Python脚本命令行参数是否自动存入剪贴板的技术验证请求
关于命令行参数是否自动进入Python剪贴板的解答
嘿,我来帮你理清这个疑问~结论先行:命令行参数本身绝对不会自动被添加到剪贴板,剪贴板的内容完全由你代码里的逻辑控制——咱们来拆解你给出的这段mcb.py代码,看看它什么时候会操作剪贴板:
首先先把你的代码格式化一下,方便梳理逻辑:
import shelve, pyperclip, sys # mcb.py - saves and loads pieces of text to the clipboard # usage: # py.exe mcb.py save <keyword> - saves clipboard to keyword # py.exe mcb.py list - loads all keywords to clipboard # py.exe mcb.py <keyword> - loads keyword to clipboard mcbShelf = shelve.open('mcb') if len(sys.argv)==3 and sys.argv[1].lower()=='save': mcbShelf[sys.argv[2]] = pyperclip.paste() elif len(sys.argv) == 2: if sys.argv[1].lower() == 'list': # 注:你原代码里这里少了括号,应该是lower()方法调用 pyperclip.copy(str(list(mcbShelf.keys()))) elif sys.argv[1] in mcbShelf: pyperclip.copy(mcbShelf[sys.argv[1]]) mcbShelf.close()
接下来逐个分析命令行场景下的剪贴板行为:
- 当执行
py.exe mcb.py save <keyword>时:
代码是把当前剪贴板里的内容保存到shelve数据库的<keyword>键下,完全没有写入剪贴板的操作——也就是说,<keyword>这个命令行参数根本不会进入剪贴板。 - 当执行
py.exe mcb.py list时:
代码会把shelve里所有关键词的列表转成字符串,然后调用pyperclip.copy()把这个列表内容写入剪贴板。这时候剪贴板里是关键词列表,而不是命令行里的list参数本身。 - 当执行
py.exe mcb.py <keyword>时:
如果这个<keyword>在shelve里存在,代码会把该关键词对应的已存储文本复制到剪贴板,而不是把<keyword>参数本身放进剪贴板。
总结一下:整个代码里没有任何一行是直接把sys.argv里的命令行参数传给pyperclip.copy()的,所以命令行参数不会自动进入剪贴板,只有代码明确指定的内容才会被写入剪贴板。
内容的提问来源于stack exchange,提问作者David Wallace
相关产品推荐
相关产品推荐

