コード例 #1
0
def prune_shortcuts(recurse=False, autoyes=False):
    if recurse:
        lnks = [file for file in spinal.walk('.') if file.extension == 'lnk']
    else:
        lnks = pathclass.cwd().glob('*.lnk')

    stale = []
    for lnk in lnks:
        shortcut = winshell.Shortcut(lnk.absolute_path)
        # There are some special shortcuts that do not have a path, but instead
        # trigger some action based on a CLSID that Explorer understands.
        # I can't find this information in the winshell.Shortcut object, so for
        # now let's at least not delete these files.
        if shortcut.path == '':
            continue
        if not os.path.exists(shortcut.path):
            stale.append(lnk)

    if not stale:
        return

    print(f'The following {len(stale)} will be recycled:')
    for lnk in stale:
        print(lnk.absolute_path)
    print()

    if autoyes or interactive.getpermission('Is that ok?'):
        for lnk in stale:
            print(lnk.absolute_path)
            send2trash.send2trash(lnk.absolute_path)
コード例 #2
0
def contentreplace_argparse(args):
    if args.recurse:
        files = spinal.walk('.', yield_files=True, yield_directories=False)
        files = (f for f in files
                 if winglob.fnmatch(f.basename, args.filename_glob))
    else:
        files = pathclass.cwd().glob(args.filename_glob)
        files = (f for f in files if f.is_file)

    if args.clip_prompt:
        replace_from = input('Ready from')
        if not replace_from:
            replace_from = pyperclip.paste()
        replace_to = input('Ready to')
        if not replace_to:
            replace_to = pyperclip.paste()
    else:
        replace_from = codecs.decode(args.replace_from, 'unicode_escape')
        if args.do_regex:
            replace_to = args.replace_to
        else:
            replace_to = codecs.decode(args.replace_to, 'unicode_escape')

    for file in files:
        try:
            contentreplace(
                file,
                replace_from,
                replace_to,
                autoyes=args.autoyes,
                do_regex=args.do_regex,
            )
        except UnicodeDecodeError:
            log.error('%s encountered unicode decode error.',
                      file.absolute_path)
コード例 #3
0
def nonempty_directories_argparse(args):
    if args.patterns:
        patterns = pipeable.input_many(args.patterns, skip_blank=True, strip=True)
        directories = (pathclass.Path(d) for pattern in patterns for d in winglob.glob(pattern))
    else:
        directories = pathclass.cwd().listdir()
    directories = (d for d in directories if d.is_dir)

    for directory in directories:
        if len(directory.listdir()) != 0:
            pipeable.stdout(directory.absolute_path)
コード例 #4
0
ファイル: inputrename.py プロジェクト: voussoir/cmd
def inputrename_argparse(args):
    if args.recurse:
        files = (file for file in spinal.walk('.')
                 if args.keyword in file.basename)
    else:
        files = (file for file in pathclass.cwd().listdir()
                 if args.keyword in file.basename)
    prev = None
    for file in files:
        print(file.relative_path)
        this = input('> ')
        if this == '' and prev is not None:
            this = prev
        if this:
            new_name = file.basename.replace(args.keyword, this)
            new_name = file.parent.with_child(new_name)
            os.rename(file.absolute_path, new_name.absolute_path)
        prev = this
コード例 #5
0
import argparse
import os
import random
import re
import sys
import unicodedata

from voussoirkit import betterhelp
from voussoirkit import interactive
from voussoirkit import pathclass
from voussoirkit import safeprint
from voussoirkit import spinal
from voussoirkit import stringtools

# These constants are provided for use in your eval string
cwd = pathclass.cwd()

# These variables are provided so that if you have any difficulty typing
# literal quotes etc into your command line, you can just use these variable
# names in your eval string.
apostrophe = "'"
dot = '.'
hyphen = '-'
quote = '"'
space = ' '
underscore = '_'

# For backwards compatibility, these names which were once locally defined
# functions are now just references to stringtools.
excise = stringtools.excise
title = stringtools.title_capitalize
コード例 #6
0
ファイル: inodes.py プロジェクト: voussoir/cmd
def main(argv):
    for file in pathclass.cwd().listdir():
        if not file.is_file:
            continue
        print(file.stat.st_dev, file.stat.st_ino, file.relative_path)