나는 아치 위키에서 이 조각을 복사했습니다. 그러나 선택한 파일을 추출하는 대신 가져온 파일을 추출합니다. 그래서 나는 알고 싶다하나이 두 가지:
추출된 파일 대신 선택한 파일로 extract_here를 만드는 방법은 무엇입니까?
Commands.py에서 선택한 파일을 자동으로 추출하는 방법은 무엇입니까?
class extract_here(Command): def execute(self): """ Extract yanked files to current directory. HOW TO USE: press yy to yank, then call the method with a shortcut or the command itself.""" copied_files = tuple(self.fm.copy_buffer) if not copied_files: return def refresh(_): cwd = self.fm.get_directory(original_path) cwd.load_content() one_file = copied_files[0] cwd = self.fm.thisdir original_path = cwd.path au_flags = ['-X', cwd.path] au_flags += self.line.split()[1:] au_flags += ['-e'] self.fm.copy_buffer.clear() self.fm.cut_buffer = False if len(copied_files) == 1: descr = "extracting: " + os.path.basename(one_file.path) else: descr = "extracting files from: " + os.path.basename( one_file.dirname) obj = CommandLoader(args=['aunpack'] + au_flags + [f.path for f in copied_files], descr=descr, read=True) obj.signal_bind('after', refresh) self.fm.loader.add(obj) ```
답변1
해결책:
class extract_here(Command):
def execute(self):
""" Extract selected files to current directory."""
import os
from ranger.core.loader import CommandLoader
cwd = self.fm.thisdir
copied_files = tuple(cwd.get_selection())
def refresh(_):
cwd = self.fm.get_directory(original_path)
cwd.load_content()
one_file = copied_files[0]
cwd = self.fm.thisdir
original_path = cwd.path
au_flags = ['-X', cwd.path]
au_flags += self.line.split()[1:]
au_flags += ['-e']
self.fm.copy_buffer.clear()
self.fm.cut_buffer = False
if len(copied_files) == 1:
descr = "extracting: " + os.path.basename(one_file.path)
else:
descr = "extracting files from: " + os.path.basename(
one_file.dirname)
obj = CommandLoader(args=['aunpack'] + au_flags
+ [f.path for f in copied_files], descr=descr,
read=True)
obj.signal_bind('after', refresh)
self.fm.loader.add(obj)
아치 위키에서 편집, 누구도 이 문제를 다시 겪지 않기를 바랍니다.