首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通配符*未被python not解析插入

通配符*未被python not解析插入
EN

Stack Overflow用户
提问于 2022-03-04 15:14:27
回答 1查看 424关注 0票数 -4

我正在尝试编写一个纸条,它可以接收目录中的所有文件,并允许用户使用*将文件重放到多个文件中。

这是我设置解析器以增强输入文件的行:

代码语言:javascript
复制
parser.add_argument('-f', '--files', help='The files to compare.', required=True, nargs='+')

这是错误的行

代码语言:javascript
复制
Invalid argument: '.\\rmsd\\*.xyz'

这是我运行以执行脚本的代码

代码语言:javascript
复制
python .\rsmd.py -r .\rmsd\1.xyz -f .\rmsd\*.xyz

我的目的是让用户在Windows和Linux中使用脚本。

EN

Stack Overflow用户

回答已采纳

发布于 2022-03-04 15:21:32

在Windows上,python只接收字符串形式的.\rmsd\*.xyz,它不计算哪些文件与模式匹配。您可以使用例如glob模块来解析它。

代码语言:javascript
复制
import glob
my_txt_files = glob.glob("*.txt")  # returns list of filenames in current directory matching the pattern
# e.g.:
matched_files = glob.glob(arguments.files)

编辑平台:

您可以检查是否有多个文件匹配,使其更加独立于平台。

代码语言:javascript
复制
import argparse
import glob

parser = argparse.ArgumentParser()
parser.add_argument('-f', '--files', nargs='+')
arguments = parser.parse_args()
matched_files = []
for file in arguments.files:
    if glob.escape(file) != file:
        # -> There are glob pattern chars in the string
        matched_files.extend(glob.glob(file))
    else:
        matched_files.append(file)

如果您不想在程序中处理它,您可以在Powershell上启动这个程序,前面的扩展如下

代码语言:javascript
复制
python rsmd.py -f (get-childitem *.txt)
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71353422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档