我尝试删除搁置文件中的所有项目,方法是允许用户输入"清除"在终端。
基于我在本网站上阅读过的几个主题,搁置文件通常表现得像字典,因此.clear
方法和其他几种方法应该有效,事实上当我在互动壳。但我无法让他们在我的计划中工作。
这是我最近的尝试(在shell中有效):
elif len(sys.argv) == 3 and sys.argv[1].lower() == 'clear':
for key in mcbShelf:
del mcbShelf[key]
在mcbShelf上使用del
也无效。
我的程序还有一个"列表"功能,列出存储在shell中的所有密钥。
elif len(sys.argv) == 2:
#list keywords
if sys.argv[1].lower() == 'list':
pyperclip.copy(str(list(mcbShelf.keys())))
当我在终端中尝试python3.5 mcb4.pyw clear
,然后运行python3.5 mcb4.pyw list
时,我认为应该将空列表复制到剪贴板。但是列表中有对象。
有什么想法?
答案 0 :(得分:1)
我认为len(sys.argv) == 3
应为2。
答案 1 :(得分:1)
我找到了两种方法来解决这个问题。一种是创建一个删除文件的函数,另一种是根据参数提取条件标志并将其命名为同一文件。这是经过验证的工作代码。
import shelve
import pyperclip
import sys
import os
mcbShelf = shelve.open('mcb')
command = sys.argv[1].lower()
def remove_files():
mcbShelf.close()
os.remove('mcb.dat')
os.remove('mcb.bak')
os.remove('mcb.dir')
if command == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
elif command == 'list':
pyperclip.copy(", ".join(mcbShelf.keys()))
elif command == 'del':
mcbShelf.close()
# call the flag 'n' Always create a new, empty database
mcbShelf = shelve.open('mcb', flag= 'n')
# or delete the files
remove_files()
else:
pyperclip.copy(mcbShelf[sys.argv[1]])
mcbShelf.close()
答案 2 :(得分:0)
在我看来像第8章自动化无聊的东西:)好吧,不喜欢那个的编码风格。这是我的方法,包括删除一个,并删除所有命令。
import shelve
import pyperclip
import sys
mcbShelf = shelve.open('mcb')
command = sys.argv[1].lower()
if command == 'save':
mcbShelf[sys.argv[2]] = pyperclip.paste()
elif command == 'list':
pyperclip.copy(", ".join(mcbShelf.keys()))
elif command == 'delete':
del mcbShelf[sys.argv[2]]
elif command == 'delete_all':
mcbShelf.clear()
else:
pyperclip.copy(mcbShelf[sys.argv[1]])
mcbShelf.close()