Python 获取带有通配符的系统参数
问题描述
环境:
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
因为运行python之前,shell会先把*展开再传给python,这样argv[1]得到的是当前目录的第一个文件(argv[2]第二个,以此类推)。而加了单引号的*, shell会原封不动得传给python, 从而正确处理