Python 获取带有通配符的系统参数

发布于 2022-09-04 02:49:50 字数 984 浏览 19 评论 0

问题描述

环境:
macOS 10.12
python 2.7

python脚本获取系统参数的方式为python xxx.py argv1 argv2

今天在写脚本的时候,我需要在脚本中获取类似*.txt的参数,我的shell命令为python xxx.py aaa bbb *.txt然而在脚本中实际获取到的是test.txt(运行目录下有个包括该文件在内的多个txt文件),把命令换成:python xxx.py aaa bbb '*.txt'程序就报错了

为什么会是这种情况呢?


给出一些关键代码和目录结构:
test.py


import sys

if __name__ == '__main__':
    file_name_pattern = sys.argv[1]
    print file_name_pattern
    handle(file_name_pattern)

目录结构:

ls ~/Desktop

test_end.txt
test_sed1.txt
test_sed2.txt

场景一:
运行目录:~/Desktop
命令:python test.py *.txt
结果:test_end.txt

场景二:
相同目录
命令:python test.py '*.txt'
结果:正确运行了。。。

=======分割线========

总结一下,是我自己测试失误,报错是我业务代码的错误,没细看就来提问了
最终的解决方案就是包上引号''后可以正确得到参数,不加参数可能会先进行处理?有知道的同学可以分析一下哈~

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

壹場煙雨 2022-09-11 02:49:50

因为运行python之前,shell会先把*展开再传给python,这样argv[1]得到的是当前目录的第一个文件(argv[2]第二个,以此类推)。而加了单引号的*, shell会原封不动得传给python, 从而正确处理

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文