我正在尝试编写一个纸条,它可以接收目录中的所有文件,并允许用户使用*将文件重放到多个文件中。
这是我设置解析器以增强输入文件的行:
parser.add_argument('-f', '--files', help='The files to compare.', required=True, nargs='+')这是错误的行
Invalid argument: '.\\rmsd\\*.xyz'这是我运行以执行脚本的代码
python .\rsmd.py -r .\rmsd\1.xyz -f .\rmsd\*.xyz我的目的是让用户在Windows和Linux中使用脚本。
发布于 2022-03-04 15:21:32
在Windows上,python只接收字符串形式的.\rmsd\*.xyz,它不计算哪些文件与模式匹配。您可以使用例如glob模块来解析它。
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)编辑平台:
您可以检查是否有多个文件匹配,使其更加独立于平台。
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上启动这个程序,前面的扩展如下
python rsmd.py -f (get-childitem *.txt)https://stackoverflow.com/questions/71353422
复制相似问题