- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
# shopt -s extglob
# python3
Python 3.4.0 (default, Sep 8 2015, 23:36:36)
[GCC 4.7.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from subprocess import check_call
>>> check_call(['shopt', '-s', 'extglob'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.4/subprocess.py", line 552, in check_call
retcode = call(*popenargs, **kwargs)
File "/usr/lib/python3.4/subprocess.py", line 533, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/lib/python3.4/subprocess.py", line 848, in __init__
restore_signals, start_new_session)
File "/usr/lib/python3.4/subprocess.py", line 1446, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'shopt'
shopt 似乎不在我的路径中,但 bash 却在:
# echo $PATH | grep shopt
# whereis shopt
# whereis bash
bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz
最佳答案
如果您想要“rm 目录中除两个文件之外的所有文件”,您可以直接从 Python 执行此操作,而无需调用 shell。该程序删除 /tmp/r
中的所有文件,除了我想保留的两个文件。
#!/usr/bin/python3
import os
keepers = ['safe', 'also_safe.txt']
os.chdir('/tmp/r')
for filename in os.listdir('.'):
if filename not in keepers:
print('Removing %s' % (filename,))
os.remove(filename)
并且,为了好玩,这里是提供相同功能的组合模块和脚本:
#!/usr/bin/python3
import os
import argparse
import sys
def safe_remove(dirs, exclude, verbose, dry_run):
for directory in dirs:
if verbose or dry_run:
print("Checking directory '%s'" % (directory,))
for filename in os.listdir(directory):
if filename not in exclude:
filename = os.path.join(directory, filename)
if verbose or dry_run:
print('rm %s'%filename)
if not dry_run:
os.remove(filename)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description='Remove files, with exceptions')
parser.add_argument('-x', '--exclude',
metavar='FILE',
default=[],
nargs='+',
help='files to exclude')
parser.add_argument('dirs',
metavar='DIR',
nargs='+',
help='directories to clean')
parser.add_argument('-v', '--verbose',
action='store_true',
help='Print actions')
parser.add_argument('-n', '--dry-run',
action='store_true',
help='Print, but do not perform, actions')
args = parser.parse_args()
safe_remove(**vars(args))
关于python - 为什么从 python 调用 shopt 会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32593521/
我正在尝试编写一个使用 nocasematch 的 bash 函数,而不更改选项的调用者设置。函数定义为: is_hello_world() { shopt -s nocasematch [[
我有以下 Dockerfile FROM python:3.9-slim-buster ## DO SOMETHING HERE RUN /bin/bash -c shopt -s extglob &
到处都有避免不必要的子外壳的建议。这让我想知道通常启用 lastpipe 选项是否有效,以便管道中的最后一个命令不在子 shell 中执行? 最佳答案 更有效率?当然。 最佳实践?这取决于您优先考虑什
我想不通,我理解 shopt -s cdspell 但无法找出 shopt -s dirspell 的作用。 Bash 引用指南说: 拼写 如果设置,如果最初提供的目录名称不存在,Bash 会在单词完
我在 Ubuntu 上工作并使用 bash shell 我正在尝试执行如下所示的“别名”,但它不起作用 当我尝试 'shopt -s expanded_aliases;源环境.sh; hal-on'
我正在尝试将 shopt globstar 的当前状态保存到一个变量中,以便我可以在需要时更改它,然后将其设置回去,以免改变用户的环境。 我曾尝试以多种方式存储命令输出,例如 var=$(comman
如何禁用 shopt选项,例如 extglob ? 我的 .bashrc 中有这个文件: shopt -s extglob 最佳答案 使用 -u选项: shopt -u extglob -s用于设置和
Bash 软件包从 bash-3.2-32 更新为 bash-4.1.2-15.el6_5.1.x86_64。升级后,正则表达式匹配条件运算符=~可以使正则表达式匹配停止工作。如何添加 shopt -
# shopt -s extglob # python3 Python 3.4.0 (default, Sep 8 2015, 23:36:36) [GCC 4.7.3] on linux Type
一段时间以来,我一直在使用 pyenv 在我的 mac 上管理 python 版本和虚拟环境。最近我重新安装了 pyenv,从那时起,在我尝试运行的每个 pyenv 命令上,我都收到以下错误 /usr
我正在尝试制作 ffcast屏幕转换工具 bash 4.1 向后兼容。 并在此 ffcast.bash脚本,有一行 shopt -s extglob lastpipe lastpipe 选项仅在 ba
我已经将我的 shell 更新为 ZSH。当我 source ~/.bashrc 时。我收到这个错误 你的医生有一些错误。当我执行这个命令时 echo "export NODE_PATH=$NODE_
我正在尝试将大型目录结构中的所有文件同步到单个根目录中(即不创建子目录但仍包括所有递归文件)。 环境: Ubuntu 12.04 x86 RSYNC 版本 3.0.9 GNU bash 版本 4.2.
我正在编写一个 bash 脚本 (echoo.sh),目的是在命令执行之前回显命令。我在 .bashrc 中获取了这个脚本 (echoo.sh)。但它不会执行在脚本文件 (tmp.sh) 中使用 ba
我是一名优秀的程序员,十分优秀!